{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "1mLJmVotXs64"
   },
   "source": [
     "# Fine-Tuning a BERT Model\n",
     "\n",
     "## Learning objectives\n",
     "\n",
     "1. Get the dataset from TensorFlow Datasets.\n",
     "2. Preprocess the data.\n",
     "3. Build the model.\n",
     "4. Train the model.\n",
     "5. Re-encode a large dataset."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "YN2ACivEPxgD"
   },
   "source": [
    "## Introduction\n",
    "\n",
    "In this notebook, you will work through fine-tuning a BERT model using the tensorflow-models PIP package.\n",
    "\n",
    "The pretrained BERT model this tutorial is based on is also available on [TensorFlow Hub](https://tensorflow.org/hub), to see how to use it refer to the [Hub Appendix](#hub_bert)\n",
    "\n",
    "Each learning objective will correspond to a __#TODO__ in the [student lab notebook](../labs/fine_tune_bert.ipynb) -- try to complete that notebook first before reviewing this solution notebook."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "s2d9S2CSSO1z"
   },
   "source": [
    "## Setup"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "fsACVQpVSifi"
   },
   "source": [
    "### Install the TensorFlow Model Garden pip package\n",
    "\n",
    "*  `tf-models-official` is the stable Model Garden package. Note that it may not include the latest changes in the `tensorflow_models` github repo. To include latest changes, you may install `tf-models-nightly`,\n",
    "which is the nightly Model Garden package created daily automatically.\n",
    "*  pip will install all models and dependencies automatically."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "yic2y7_o-BCC",
    "outputId": "ff5ffe2f-91a9-4852-eaf9-748480fc448c"
   },
   "outputs": [],
   "source": [
    "!pip install -q -U \"tensorflow-text==2.8.*\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "NvNr2svBM-p3",
    "outputId": "eea49cc2-3345-4044-9405-993872db33fd"
   },
   "outputs": [],
   "source": [
    "!pip install -q tf-models-official==2.4.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "U-7qPCjWUAyy"
   },
   "source": [
    "**Note:** Restart the kernel before proceeding further. Select **Kernel > Restart kernel > Restart** from the menu."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "U-7qPCjWUAyy"
   },
   "source": [
    "### Imports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "lXsXev5MNr20"
   },
   "outputs": [],
   "source": [
    "import os\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import tensorflow as tf\n",
    "\n",
    "import tensorflow_hub as hub\n",
    "import tensorflow_datasets as tfds\n",
    "tfds.disable_progress_bar()\n",
    "\n",
    "from official.modeling import tf_utils\n",
    "from official import nlp\n",
    "from official.nlp import bert\n",
    "\n",
    "# Load the required submodules\n",
    "import official.nlp.optimization\n",
    "import official.nlp.bert.bert_models\n",
    "import official.nlp.bert.configs\n",
    "import official.nlp.bert.run_classifier\n",
    "import official.nlp.bert.tokenization\n",
    "import official.nlp.data.classifier_data_lib\n",
    "import official.nlp.modeling.losses\n",
    "import official.nlp.modeling.models\n",
    "import official.nlp.modeling.networks\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "mbanlzTvJBsz"
   },
   "source": [
    "### Resources"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "PpW0x8TpR8DT"
   },
   "source": [
    "This directory contains the configuration, vocabulary, and a pre-trained checkpoint used in this tutorial:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "vzRHOLciR8eq",
    "outputId": "feaa33c5-766c-4114-eced-3851cfceb718"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['bert_config.json',\n",
       " 'bert_model.ckpt.data-00000-of-00001',\n",
       " 'bert_model.ckpt.index',\n",
       " 'vocab.txt']"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gs_folder_bert = \"gs://cloud-tpu-checkpoints/bert/v3/uncased_L-12_H-768_A-12\"\n",
    "tf.io.gfile.listdir(gs_folder_bert)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9uFskufsR2LT"
   },
   "source": [
    "You can get a pre-trained BERT encoder from [TensorFlow Hub](https://tfhub.dev/tensorflow/bert_en_uncased_L-12_H-768_A-12/2):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "id": "e0dAkUttJAzj"
   },
   "outputs": [],
   "source": [
    "hub_url_bert = \"https://tfhub.dev/tensorflow/bert_en_uncased_L-12_H-768_A-12/3\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Qv6abtRvH4xO"
   },
   "source": [
    "## The data\n",
    "For this example we used the [GLUE MRPC dataset from TFDS](https://www.tensorflow.org/datasets/catalog/glue#gluemrpc).\n",
    "\n",
    "This dataset is not set up so that it can be directly fed into the BERT model, so this section also handles the necessary preprocessing."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "28DvUhC1YUiB"
   },
   "source": [
    "### Get the dataset from TensorFlow Datasets\n",
    "\n",
    "The Microsoft Research Paraphrase Corpus (Dolan & Brockett, 2005) is a corpus of sentence pairs automatically extracted from online news sources, with human annotations for whether the sentences in the pair are semantically equivalent.\n",
    "\n",
    "*   Number of labels: 2.\n",
    "*   Size of training dataset: 3668.\n",
    "*   Size of evaluation dataset: 408.\n",
    "*   Maximum sequence length of training and evaluation dataset: 128.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Ijikx5OsH9AT",
    "outputId": "bc16367c-a1e4-4357-b768-7ec4c4d51ea5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[1mDownloading and preparing dataset 1.43 MiB (download: 1.43 MiB, generated: Unknown size, total: 1.43 MiB) to /home/jupyter/tensorflow_datasets/glue/mrpc/1.0.0...\u001b[0m\n",
      "\u001b[1mDataset glue downloaded and prepared to /home/jupyter/tensorflow_datasets/glue/mrpc/1.0.0. Subsequent calls will reuse this data.\u001b[0m\n",
      "WARNING:tensorflow:From /opt/conda/lib/python3.7/site-packages/tensorflow_datasets/core/dataset_builder.py:643: get_single_element (from tensorflow.python.data.experimental.ops.get_single_element) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use `tf.data.Dataset.get_single_element()`.\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-05-05 11:18:25.350459: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcuda.so.1'; dlerror: libcuda.so.1: cannot open shared object file: No such file or directory; LD_LIBRARY_PATH: /usr/local/cuda/lib64:/usr/local/nccl2/lib:/usr/local/cuda/extras/CUPTI/lib64\n",
      "2022-05-05 11:18:25.350529: W tensorflow/stream_executor/cuda/cuda_driver.cc:269] failed call to cuInit: UNKNOWN ERROR (303)\n",
      "2022-05-05 11:18:25.350567: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (tensorflow-2-6-20220505-163858): /proc/driver/nvidia/version does not exist\n",
      "2022-05-05 11:18:25.350955: I tensorflow/core/platform/cpu_feature_guard.cc:151] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations:  AVX2 FMA\n",
      "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
      "WARNING:tensorflow:From /opt/conda/lib/python3.7/site-packages/tensorflow_datasets/core/dataset_builder.py:643: get_single_element (from tensorflow.python.data.experimental.ops.get_single_element) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use `tf.data.Dataset.get_single_element()`.\n"
     ]
    }
   ],
   "source": [
    "glue, info = tfds.load('glue/mrpc', with_info=True,\n",
    "                       # It's small, load the whole dataset\n",
    "                       batch_size=-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "xf9zz4vLYXjr",
    "outputId": "23b07b90-6b0a-429d-add2-adc08890612f"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Split('train'), Split('validation'), Split('test')]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list(glue.keys())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZgBg2r2nYT-K"
   },
   "source": [
    "The `info` object describes the dataset and it's features:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "IQrHxv7W7jH5",
    "outputId": "1a1e7c32-e52e-44f7-b8da-fbc26e38f9e5"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "FeaturesDict({\n",
       "    'idx': tf.int32,\n",
       "    'label': ClassLabel(shape=(), dtype=tf.int64, num_classes=2),\n",
       "    'sentence1': Text(shape=(), dtype=tf.string),\n",
       "    'sentence2': Text(shape=(), dtype=tf.string),\n",
       "})"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "info.features"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "vhsVWYNxazz5"
   },
   "source": [
    "The two classes are:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "n0gfc_VTayfQ",
    "outputId": "96c4c019-fdf8-41d6-8368-94aad854bb06"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['not_equivalent', 'equivalent']"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "info.features['label'].names"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "38zJcap6xkbC"
   },
   "source": [
    "Here is one example from the training set:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "xON_i6SkwApW",
    "outputId": "4329216a-211e-4fa7-a590-1fb131b324a5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "idx      : 1680\n",
      "label    : 0\n",
      "sentence1: b'The identical rovers will act as robotic geologists , searching for evidence of past water .'\n",
      "sentence2: b'The rovers act as robotic geologists , moving on six wheels .'\n"
     ]
    }
   ],
   "source": [
    "glue_train = glue['train']\n",
    "\n",
    "for key, value in glue_train.items():\n",
    "  print(f\"{key:9s}: {value[0].numpy()}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9fbTyfJpNr7x"
   },
   "source": [
    "### The BERT tokenizer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "wqeN54S61ZKQ"
   },
   "source": [
    "To fine tune a pre-trained model you need to be sure that you're using exactly the same tokenization, vocabulary, and index mapping as you used during training.\n",
    "\n",
    "The BERT tokenizer used in this tutorial is written in pure Python (It's not built out of TensorFlow ops). So you can't just plug it into your model as a `keras.layer` like you can with `preprocessing.TextVectorization`.\n",
    "\n",
    "The following code rebuilds the tokenizer that was used by the base model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "idxyhmrCQcw5",
    "outputId": "fa132459-4002-4031-aacb-320722bdd06c"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Vocab size: 30522\n"
     ]
    }
   ],
   "source": [
    "# TODO 1\n",
    "# Set up tokenizer to generate Tensorflow dataset\n",
    "tokenizer = bert.tokenization.FullTokenizer(\n",
    "    vocab_file=os.path.join(gs_folder_bert, \"vocab.txt\"),\n",
    "     do_lower_case=True)\n",
    "\n",
    "print(\"Vocab size:\", len(tokenizer.vocab))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "zYHDSquU2lDU"
   },
   "source": [
    "Tokenize a sentence:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "L_OfOYPg853R",
    "outputId": "f9ae5509-a0d9-4d58-aaff-7d1679c675e5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['hello', 'tensor', '##flow', '!']\n",
      "[7592, 23435, 12314, 999]\n"
     ]
    }
   ],
   "source": [
    "tokens = tokenizer.tokenize(\"Hello TensorFlow!\")\n",
    "print(tokens)\n",
    "ids = tokenizer.convert_tokens_to_ids(tokens)\n",
    "print(ids)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "kkAXLtuyWWDI"
   },
   "source": [
    "### Preprocess the data\n",
    "\n",
    "The section manually preprocessed the dataset into the format expected by the model.\n",
    "\n",
    "This dataset is small, so preprocessing can be done quickly and easily in memory. For larger datasets the `tf_models` library includes some tools for preprocessing and re-serializing a dataset. See [Appendix: Re-encoding a large dataset](#re_encoding_tools) for details."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "62UTWLQd9-LB"
   },
   "source": [
    "#### Encode the sentences\n",
    "\n",
    "The model expects its two inputs sentences to be concatenated together. This input is expected to start with a `[CLS]` \"This is a classification problem\" token, and each sentence should end with a `[SEP]` \"Separator\" token:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "bdL-dRNRBRJT",
    "outputId": "151c021b-2b0f-49fe-b62f-36261810772b"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[101, 102]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tokenizer.convert_tokens_to_ids(['[CLS]', '[SEP]'])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "UrPktnqpwqie"
   },
   "source": [
    "Start by encoding all the sentences while appending a `[SEP]` token, and packing them into ragged-tensors:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "id": "BR7BmtU498Bh"
   },
   "outputs": [],
   "source": [
    "def encode_sentence(s):\n",
    "   tokens = list(tokenizer.tokenize(s.numpy()))\n",
    "   tokens.append('[SEP]')\n",
    "   return tokenizer.convert_tokens_to_ids(tokens)\n",
    "\n",
    "sentence1 = tf.ragged.constant([\n",
    "    encode_sentence(s) for s in glue_train[\"sentence1\"]])\n",
    "sentence2 = tf.ragged.constant([\n",
    "    encode_sentence(s) for s in glue_train[\"sentence2\"]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "has42aUdfky-",
    "outputId": "06cbd2f9-ef89-44ad-fc92-647599a5918f"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sentence1 shape: [3668, None]\n",
      "Sentence2 shape: [3668, None]\n"
     ]
    }
   ],
   "source": [
    "print(\"Sentence1 shape:\", sentence1.shape.as_list())\n",
    "print(\"Sentence2 shape:\", sentence2.shape.as_list())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "MU9lTWy_xXbb"
   },
   "source": [
    "Now prepend a `[CLS]` token, and concatenate the ragged tensors to form a single `input_word_ids` tensor for each example. `RaggedTensor.to_tensor()` zero pads to the longest sequence."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 265
    },
    "id": "USD8uihw-g4J",
    "outputId": "0232bc4d-79e7-4c9f-caa3-9368609ddd7d"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAD4CAYAAAAAczaOAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAACK/klEQVR4nO1dd3hcxfU9oy7ZsmXLVW5ylwu9md47hJLQAiF0QkJJoyc/SEgCoYUACQQCAZJQTCeAY3rvJnS5W+7dli0X9fn9odW75452nh/GNtZ6zvf582h3Z/e9O7t37txyrrHWIiAgICBgy0DWt30BAQEBAQGbDkHpBwQEBGxBCEo/ICAgYAtCUPoBAQEBWxCC0g8ICAjYgpDzbV/AupBn8m0BOgAAGrt3iB7Pra6LmWVobBM8DjR0yZf3Xl6ffkpjk/6YbNozm5plnCtibc7XIs5a2xCN67vmyeON8pqc0noozKLPqZf5tlk+k2UDAE0FMi5YECcrH/yy8r+OIXNYtoAjX99bbQBZNxbKG3rlO0vbPZY+x+YYelzG2TX6+hu6yDrmLlkrc2h9AgI2JXY7eGeMHz9+vLX2EPc5s7mnbHYyXe0uZn8AQM24IdHjXc5YlWh+U5/u0djQvWbNW6JfmEU/fvqxFoyV8Yr/66em5E+cG41tjVyPKe4oL+qolXFteReZ/+7E9Ne8St9bTu9eaT8nKdbsOzIaF736VfrrBLD8XvlbydeQNu6k59g586Pxn78cH43PO+3CaMxyagN+75jvopJv757ROIk8gbYyDQjIZLzY/CiMMROstTu6z7UrpZ9T1jv9i/Ly9N91Hss2OzsaTjl/gH6ufHU0HPqzheucDwBoakr/urxcGZNlDgBLDxgYjUtfmpF+fudi/feKmmjIys8O7h+NsxYvV1Nq7hNTv/gsugZlJdN1ArBLlsrLSEnmDBkkL3IscNtBrHizvAbpULNLf/V3x4lyraZ6pTwRtwH41i7JujnzvesGeNcu0boBeu1Wigx5PYBka8LrAYSNKyA5Mkfpk8XbWC7WXs5iR9msXhMNfZaxKems/rbVK9JfQIwici3lCORyUD9oQJ0ikn6O7dpJXkaKtbmnWLlZC5alf1/nve3KmrSPA4DpJAqrZic51XR86ctoHHcKUWtSRQq4Q5G+ngxbH0aStQL0etUPK5NLmzA5/WdCr4/6zBWycYaNIQCIV/qbvU/fh9V9CqNxp8+nqef4xz7vzK2jcZ+x0+VFzo+b5yhFRD9wO0yfDsx8ssTyyW/NJ4187c9GAZ1K2IInZdy43VA1JXequFDYDZU1ixRrnrbaGfze3vuEVh7FH86WJ2hOjk+RAsiqE8c5v3fT/AXqdTl9RMn5rsdV8iz7rCRyh1bAmDlPPrNHN3m80ZlTInMOfuzDaDx+lz4yv69z4qR15M9poHVUawiodWRF792oAPWd9W2WLFt3jvdte5eqv83kmdE4bCKZh3Zr6TOa+nVXf2fPXhyNlS+YfqzN+VpJZi0Sy6thsHxO7jRRWO4PzfTqIe/XQY7vWUtFYbnKi39EK0/eNRp3fX2WvKijtoxXjJYfZee3q+S96L75nt1rTXKd7rWGH3tAQPtFRlr67KPN+srxsdIxmK1mVuBTf1qupuy2pwQbFx84NRof99GUaPzokXvoz6mXLA4zbVE0tgPIknX8xxwVqC2l4zu9joOjANCJ/yYrlTOB3A2pdvcR0bjg7Uq5HnqN7edYhV1EbjlLqqPx4kPFn91t7Od6DrkgTBdxydhlMj/OJcTryJuO68rwbcSTaR132/MrnoLFB4pMj6d1HHvM3vKi2fPwtTFAy80skxMSr8P8M+SUWfbodDUniVvLdnHcOTPmyOtYPnwajQv083rnyEnDjcUsPkhiMLzewRDIDKzT0jfGFAB4A0A+WjaJx6y1VxljrgZwNoBWE/MKa+3zqTmXAzgTQBOAC62141OP7wDgPgCFAJ4HcJFdxwX4LP3Z35fgYr8H9Q9q/jHyXO8n5bnmB0XBLH5Yu2p6PiOvU1ZyqfhibSediWPWiGvAFlFAkxTm0a98puY8ccp+0ThrIQVf+RjuioR80LOPkx9k37/Je3OGDgB0mCDuGXbv8A93/i92U3NcOUaXFiO3nDVyrRzg9MkQ0HJMIkNAyzGRDAEtxwQyBPxuJA7kLtpfB+crzpesoaAYAzYHfFNLvw7AftbaVcaYXABvGWPGpZ77k7X2Rn6xMWYkgBMBjAJQBuAlY8wwa20TgDsAnAPgPbQo/UMAjENSUPpj4RL/XpHV4Hn8ZFEKPaFPB0pJ9ZHNpbmIcundYCkHKD1711P7ba3+zgKlipIistXpM18AKAtttxM+icaz/ibWWtHUaj2HrodTHKt32yoauwoPHn+yOVIs8NLRq9Vz2V9IPKWRM3481jwAZbGqKgq6ziUHDQTjKdHzWHyE+N17PkvydAKfKoBNJ49+z4qLq3mozixS8QJa367/k7UvfckJKvtiHry+9PkuwkYRsCmxTqWfssRbv5W5qX9x1vlRAB621tYBmGGMmQpgZ2NMFYBO1tp3AcAY8wCAo/E1lL6dL4HL0g/ILeAcaXu+QEFIDvSRO2bR3fro3P0ECqrOFfdBFv2Il+2vFdHCPcV9UHEb+fF9OfuAVoANEvjk47rKsAHQVCmBvln70fvxcd11U7B1TZ/T7cWqaLzoEe2m6H5CelcH38PKITresPB0OWEoGVSJu8wt31KZOezW4vV93Em/JPn0eIg2q86yAVTvqRV4yetVSAde3zalZew2WVsr4wXivmsMSjqgHSORT98Ykw1gAoAhAP5irX3fGHMogPONMacC+AjAL6y1ywH0QYsl34o5qccaUmP38XSfdw5aTgQogCgZpUA5v7uPE+AlC2/JGPGBLx4jCmbEBYvUFGXlenK6u77Jlw90fUP2vqYeomRrydWyfIgWcd+H07tQ4pBTLi4Hzt02nProzFGWJZ9CSDa80bng4C+nWHZ9pUq9rstT6V1HvqB7ywvT58lzoJ3XDXDW7npaO1LMJW/Nhg/KxWTTrxsA1PaWrLAOH81COmSPGqbf2+PTb9paiglz5jjFgA2eTKe4OVyPQmviTclFOEUEtEUipZ9yzWxrjCkB8KQxZjRaXDXXoEXfXAPgJgBnIH1dvo15PN3n3QXgLqDFpx897rGg2XJzUfq4PLf6O2IJ2kVL0r0cAFA3piIaP3bfbdH4lJ2O0ddJ15O1XKzclbuIC+Xo095Qc978SjJ2Cr+gStWY1LrGKkmha957+2jMqX58zXHXrU5Fjjtkwaly3b3uF2t6p7er5fov2ZWnqHtQTpyYvPYFR0nMpee/5HMWeh4HgNLHZLxBLe1ZeiPnBNtGePDlZN8zGu98su732hBzAgK+Br52yqYx5ioAq9mXb4wpB/CstXZ0KogLa+21qefGA7gaQBWAV621FanHTwKwj7X23LjP40BudrEcvQ0d65fvqekRurxWlf7NuCin2blvsj45b3nePuKK6HOX4wMn94qhXG2ebybpa1HWMFUYN5WJZZs9V6dfesH30+CoCNePHn1Q07pfg5C+GRDQnvGNArnGmO4AGqy11caYQgAHAPijMaa3tbY1l/AYAF+kxs8AeNAYczNaArlDAXxgrW0yxtQYY8YAeB/AqQBuw9cBb1CkvLp85M9R995XjK/d5sq471ixstsEOmsoqOnh9Zlztg7k9rlbNg4+imcn5J3xulAcThymAOAAOPvNYwuBCNkd6XUD+6rnVJYNybB+kLiHcj+eAoZJ4EpzMedEOQWwDMOGFBDw9ZDEvdMbwP0pv34WgLHW2meNMf80xmyLFhdNFYBzAcBa+6UxZiyAr9ByQv1Jyj0EAOdBUjbH4etk7sDvZ1YMjO4cymuPc+nwe2R9Semb/F6ukuQgZLeSaLxoTNdozAoKAExXeR1b55yC2ve/+joXfUee6/Fveb9GqnTNgd+HbgukEC1O0ddVSIgl78NJ6eesruUp2uXWU4rF8uZRhov7mcRP49YkRO/VQ/v0VSyE/PP+s0rYEAIC0qH9VuQWEoHVWkcRUfn9qmGiIIrfI6vdYb/EKp2KKBdACsvlaeGNh0GUCAsO1a6nXuMo2MhkbOwDz9V7sV0quehJ3EOAdhEtOpw2jedoQ2OaAgBrBpZE4w4T0gcx25woWCYJ5AFomSSSB6Blwq/znGKAoPQDtlxkTkUuKY8p54rCa+yp+c0rzhcrtW5H8a93ZLdPiVZ4878rirHsWQlO1veS1+Ws0p/T3IOem0HBZLLgez2dLFunqS9V2joVxsaTBz755+XReNhNTlUyKU1W9JNuELldusN4NeXJnYhNk04kiw8QJe1W5LJiXXquFHv1fLYqGtuiQp6CZv7WGTlheYnHHHAmzpSz5PQ35Bqt9LN2GB2NV/eXzUFt/u7mksAIcmk/eL18J6nJv9Dpvmq9PEFvXitArxevlfGsFRAqagPaon1Z+kytHHPdtaPF71wwWRQBW8zuj9N2F0Wi/NT8OS55GruV1qxFWrhEaLQhzDpFFEG/v4rbxnTTBFhcX6AKfjwnACCZrGb+cJD6u//tcg2XfPZONL5h94PSzgeA5fuUR+MuH5DS9ckD0DJJIA/AkUkCeQBByQVsucgcS5/h4WwBgKpTxeVQcZW8TvmJHZdQ9q3V8tRvxOJUDUB8PP2AstaaaQNxee77PEX1BUcRRcTw8mi8dLQuHOv2gliFdRQgzSc3Rxv2S2Jx9GXiDLjfuQd6jxv2OpSe8AdYO00Tt5hdmD7raNIdOq+94lLy49OG1PsdcQ+5m3LWfaLofevjzlEySbg+KCa3HwXDm8l9tixufSguEts8xvP9DRtVwMZG+1L6VJyiGkw4R/RhN5JC59RMUtpLDtbH7dX/lfcYMDs9s2bVfXrOGRXvRuNXj9kmGjNjp5tJNGc/vlZ5rq5UTielj2sXypo9hTyt6BPxgS/6u7iXepy1Us3x8c9zJs7arXQmTsE7wiGzdg/6zM+JjO5gzb3TfRy5KVjJ0qYz/DztqlF0DVR4lvOJEN1ZZ00r50rR0vAZ6QPybda0F63pY1SFO03iFbVOfUPBTGcTaJ1Dqbelk/RzfI5qKqDNlta+YQe98eVNlurnxVQZzeuYuEtaOdU4VumNhon3uKaC11GtoQs2HgJvf0agXbl3sreSH6hLyKXAQVpfgJYDwYC2/DmNkF0RzulABTVXen4EMT7j5fuKkip5xu979d13nFJo2mpwNM6ZuSjta9zqTYZie6QfextXkccfHcfb7y3cYsZON9DOSLK+gD/Yn2TdYq6T1w2IX7uAgG8DGePeYYWnCqCo6QMAmJiGIq1o6qaP6KZB6B4UcyMrCycgWXWcuFryqmXc+z7yz7sUEaRk3rrxr9H4yFfFneK6amYeLimgA+6vRjq4yoYbmvgyX6xDNjb1YolZDLhbLLz8iX73zmVvS3Dxut0PlidIVjPP1LGDvGoZK1mVCeGaq4z/M0Gye4/c4VCkgxujGHC/hzmVXlN1hjPnCTlFzDtYXDq9X5eLZiUPBEUf0L7Qrix9dgWs2FEClblrdSpl0RfiM+bg3k8+mRCNL/376WpO/+cpyEt+3rxHyMK7Xrs2vGmNlIfe1FGfKDiVcvUOonS974X4Zily0fpEwZuiagKfkKdlo8qaAsbquqnwyzi+dl6H+hPSMXqgTW9hln3WxPQZNrZUt2U01FgmkdwBVP5erts2y7WN+Kn0MQgbQ8CmREb2yI3jdll+r/yoa14hC/xdCRSy/xgAmkazOyR9g23XTTH1Sqm2HfSUPJc9S9wp9cM1k2VNP7Gmuz5JbgF2x1Tpz+fNoXAuVed2kBgHNxYBgKb+ct/Zcyn+QQVlnOUEAAVfEOUx3Stz73xwqq4wZv+4+vwY8jV+7yQybAOPn9nNemrsVSJTqOFMYxfZDPImaWbR5l5yqvLJ1/0eNI+S08K3LeuAACBDlT5baKZaf+kXHSJWapdJkjr49MN/i8bf2/E7/g+NsYYVBklONLueGgaJm6KhWLuaij4lgi+S/Zw7RNn0PU/z9q/Yozwad36rSp5gN1a900SA00uzaINkdxUpT8AfqPPJHdCyZ7lzbcBjHz2j5nhlT3Jfs41Wkmu7i4uq9KWqaLw+suaNeNH2+iRWM0rk2OM1+cycWpmv1gDwr4NvDQDvOoRgacCGQEYq/caBMs5arYumsmrpb/INr9i9PBp3fkfHAXwBReSk5793MeQ/oqinnkJUyNn6x+6l4eUf+G7bqjmry0QxqevmNnlOdS1/jn7Cc2+Auj9WjHmTxYWzZjtd/FP4urQoDEoqIGDzQMYEctlPvbanWFHF72nXBh/RJ10oCrjidrKgnc3Oa2mzoncySpbvJC6UKT8gpTtHXAZx/WHZt7z8eKE1dqteO89IX+Vpqap44o81L3xxH1lavh9Lfm9T7dkYAOSspJoECgSzkgeCog8IaG9oV0q/sRMrerJ4Ha4abms44ndOi8MU1myrLda+PyYfK1nNU06TjWbYzTqfedFOMu7yGrmBqPtSjpO94+P+V7nSnbXVrqxz4t3nJioDntVul6JP6L65rSN12HJ56Zv3Ea5+5esm+cYVQPHJZS3XFrCbBVANv33ynXSJQ1vwa9kIG7aXZvd5C9N3PHNhPDUEbgDcm54aE0NiGoQ1oyTozTUVag0AWOrEFTbOgE2JduXe4cIiLz0vAOQwzzz5WElhMismANW3lcE/6OZSrYybib1ywJ8lMMwFWBygBYDsz6chHdT9xNAk8ymmepQo+pw1Oqum+IUv0783+58dAjku6OIuVsyEufhEHVzs/nB6mmPvWgF6vRKsFeCsF61VHGsoz+GYSxWlkA64xemRQPC+d0wsxLuOTgpqknXkNWzz3p51dIvykqwjryEQNqFMQEb69FXetZO1wdW69bsMj8b5lWK9NgzWFnju1PQUv22Kq/hzKMi7ev9R0bjjJ2QluwFWT5A4LtuFybqG3SHWbF25KI6seq0k1+d+VIyAFWYN8ejU6/gJ34OiuagV99Da0borJlf+BgUTELDhkTFKf8q9cv0VF1EtfMJ7YOumx5tOSiBlU3B/WTtMYgJuERjjyUmvReNjdzlK5ruWF1lrB70k93BKZ7HqTt3pWP3mTCrGvW8Jc87VFni/h6tkDlmiahOc4qSmNlIRFsmUU0aLXvP79De39Um0Js4myJXA33R9eE14PQDHjUTXUL+z0DVs6PUJ2HKQMUpfWcB8xHabqHDw1ZNO5+ZaM+0Ap9fV7CBWqoojwO8+WLlbeTT+559uBOMnu3wPacH3E9MvV4HdJO460nssPIJ6zz4bQ/VM11A3TNwC3FAlLjDtvR5nfVgxrt5PmsirE5J7IqG1W3yonHzieGPmHk/dtp6UHPeVO0k66PqsD8sGAPIpu0llUZEbKijfgE2JzFT6rGBcHh0PH8vsk6k71Z0OdS9Z4NV7l0fjs69+MhqP3XEoT0nWbnA9cuHbxCh8fW05RhHHo5Pg3oC29xfNp8B0m83Ft1l5cs+BoAADAjY2Mkbpq16tTM7VRWeuKEs/JuuCUTuKOPi/EjbClbuK+6DTO1Xe+UvvEcW4ey+xpice3j3dy1vAXD7MP+9keijlzi0fWQZOe0H1fh7FzPcGtA0cRu9Nmwa3dQSAvs/L9Zg68fdX7ySbWOfnvlBzvJvdBlwrwL9evrUCYtbLt1aAXq8EawU46+VbK1cGRPvsy1Ry3XxJ1qfkjSo1x1s/EtBukDF5+qx8Kp4TLpRPf6Fpa/OpP2tTZ/mx1nWXsZtvXjBH5tRRYVLxeFFYDdtpS3jq96VMf8SZ5Pp5zn8PviwUpRSczCJ2HXE2kfJtO1z2STJpdv7VR2rOp8u3jcYsQ+4eVjrRKVCjFFBQpkjhIieATbB7bheNK1mGvxUZ8voCWhnnL5R74xOOu2lZohxmGZb+SJRs5TJNosd01+okR4rZdQ02zfeninpRE1Pp/Q3Q+6Z31N8+qryO06uisb/kMCAT0X4t/X6imNsUGTHx1gr5cc07TqzU3vcmS9VTWUKdNKGX1xold1NsM3a+h7WS7TLjRp0a2v8G2RCyl5LCoQyZNgFjzmjiylvK7W92+uoyZ7xv0+BrBhzZJ5A7oGW/qWTNvRC88oTOn/etj+rlAIeGmtNefWsAtKXpbp0faBgCNgAyxr3DroCJl5VH44qbnBx7du+4rpIUagd2VX8XVHpSHJv8tMIcJPa1YozjvFeZJw3yOW16BfiC1nSfiRtuEJOlW5vgc7usj6xZvkwuFnetPnkAjkwSyCPucxRYHu7nMDxrDQTlHLD54Ru5d4wxBQDeAJCfev1j1tqrjDFdATwCoBxAFYDjrbXLU3MuB3AmWk6XF1prx6ce3wHAfQAKATwP4CL7NXadVTsTpcJ1VdHYOk3OJ/9KfJ89nhNLsMvHYgku3ClPzVlzlPz4B4yTS2I3UJu+uh3FNWA4M4ja8U0/T1u5g64XK5crh1Ug1vmcpj5iMVYdKRbwoD+SxUxuH0C7fpRLKKawiW3RhiHiqqn4K1nQWY7Fmkd1B2Ql50wlX3m59rWDlDHXN3R4WdwzltpHunPUdXPdg5uRRacFVU/AFc/O5jLzdFmvNWXynP5OaKWv6kcoe0fxLNF3AgAW7Cl/r6E2Avz9cE876h5IBkwBzd8PwP8d8X0/2jznMWAaHVdn7iL6/taRa89SjCNslpsF1mnpG2MMgA7W2lXGmFwAbwG4CMCxAJZZa68zxlwGoIu19lJjzEgADwHYGUAZgJcADLPWNhljPkjNfQ8tSv9Wa+24NB8bQVn6fanIhwJmTY6bIpuUaXN3OXqzkm0Dth65Tyq5Kab8VFMDDL1F0gX3elEqbV/+0e7RePF2+qTRcR5VXFK8wOtOgZNOSvc95aJyuZa/OScVch9w9afaaFwl6aMq4ADiHP05PIflw7JxwW6lhbuIknzqsuuj8f5jL1Zzhl4dulMFBCTFBnPvGGOK0KL0zwPwAIB9rLXzjTG9AbxmrR2esvJhrb02NWc8gKvRchp41VpbkXr8pNT8c+M+MwnLZvZnmhufLaSmvqJgVCMMpr0FdNNzT9WqmxapLEaWY4xMOYeflb4dLAU2WTVreIryVcemTxI4l50J3OIqf5Pct3F5gbiKl1/3Da8zNh2W1y5m3RrLxYTOmSHB1l3HS8D4nd10NXfYUAIyAd84e8cYkw1gAoAhAP5irX3fGNPTWjsfAFKKv5Vysg9aLPlWzEk91pAau4+n+7xzAJwDAAVI75Ov7yw+1tXHbaWe6/6OKHflG6agX9EDOpd/zXGewiKyeNsoIlIyNTsJgVvx+6JU1myvWxLO3Vfeu0I6DaoGGW5TcIayzrknraOMFVMnvV/1abtG46Zc/Tk9X5T0x4a+4n6o7S730PFFnSGz6kBxz3CHcJZBm2wXUqzXXvlSNL75tSPk88tK1JxcIlbjOgyW78xD9f2MuEE3SGnFu7TRmGJdCMcEckzKt7qX/FT4+wUAzUXiKjRTZB2bR8rnZH2lTz78XSp6VL6j6nvoIkkBX1JeIEKbNNzxEqhu6iQuTN4428DXg4LTit3gvOc6w8a7cZFI6VtrmwBsa4wpAfCkMWZ0zMvTaSwb83i6z7sLwF1Ai6UfPUG50kVT5ItZOEvfxuLdxcfZaQbnJpdE4+4XOtkuNaKk+Mex8IjyaNzzGaealYK8C3aRH2uHmeJOcVNDj/yNXM+ccXI9aw+TlMA2dQdMjOYL5DoFUL4K49LHyJou1X5mrnqd/iOZM/xiSkd1FEfxBNkoVKXtvlJp26FSZ9Vkk+64frB8lXIGy2fmLtD3Y/NljZeQ0ub17fqZc3qj+1n4HapKdteRMOVCed3gsdXReOtr5DQ55UPt5jNThU2T/eOqi5bjN+e1W30Irb1n3QDH185rR/c56Y8UIAAw/GLP5kDUEV0n6wC4qZX3y66S9XVZWb82NlKaasDXw9fO3jHGXAVgNYCz8S26dxTcClb+sdCPiwNetT10fjb3qOXy/bJX0/fOBaApnelzlu0nSqHrq1VqCtMKY2Z63n33PutGyoEo732hRGD64rzlmgitvlQUYNHHcm9xfV99943potSCFRYQsPnjm2bvdAfQYK2tNsYUAjgAwB8BPAPghwCuS/3/dGrKMwAeNMbcjJZA7lAAH6QCuTXGmDEA3gdwKoDbvtadsHLnVEqXhrdYFOuME8WnP+hOsfA6zIYGuX7K7kmfR94GeZQBlCvupq6v0FHecdUsHiPX04MsKsVL73TBYkXP13PXnbdE4yPe+7Gac/uO/4jG5z98tnzmx1SRu4c+bvd9XITiS0HNieP6pzWZdqs0mBl8qbbaJ/5GTkLDz5ss0xPGG1QjGKoy9eW+A/Dm88euL6f7knG0dDd9baUfyvtxoJvf+5b3HldzeL1u3/HBaOxbKwBYOUBOeUnWCoC/d4BnrQC9XknWKqB9IUn2ztYA7kdLRl8WgLHW2t8aY0oBjAXQH8AsAMdZa5el5lwJ4Ay0FPv9tDVDxxizIyRlcxyAC9aVsumz9CffJCmFQ8+ZouZwul/WPE43lB9AU28dwMueK1avIup6VBT4rJP1sb7fHZ7NwVOk1Aa+Tczp0NVMflUuoErE/eN8DhcPxZGn+eTrplImkS/LFtDybeCEIdLfLFtgw8qXs4dYnm0+hzDpYln74bfqWAEXawVlGLA5IHOKswaVR4/bInFfXP7MWDXnd1WHR+P5z1MQcn/JI1/boA85ZeeRNcr8KTEFPomVLoPJ4ZgumD5n4k0jeQaG3SM+3+wVxNOy0n9tnGevuPWpyGj57rowqeQZT5YPyV2xlgJAjQRVVTButDSPWT5SB+O7U/aMG4toxTeWLZBIvixbQMuX+W2CMg9oT8gYpW92ETKp7CV+C2/6qaLwBt4gFuPiE4iv/Xl/MG/mD6mz0v3yOrfbFge8FLOnz4IHvKRi9UOJyni+owg9rKHq6F6kYxS+OZYfd9fec22mtwQH7XzN8e5zybCSnX+GJgFbOUQ21eFXSNrqrPPldSx3F+okNpZeF8dOypsVu+V8sgUw6xT5nP7/ks/Jeki77JbdKcVnBUsltlNQRXGRmM9RcieXUpysAwLikDGEazXl8oNYfKy4QIb+Q2eHdCR//fRLRJEMviOGS55+eKxwmvqLvzN7ltPYw7V6U7AlRHC2yvEzU155PRG75S6mH7SjIOZ9lwKsz0o2RXOpuDmy5ms+GB9T4qoTxkTjxdtr5cVyXLSHBHxrKOt08B362nI81bEgsrOyR7Xcy1huNL//s3QPMXUUxsOMUT9EZ66wTG2BKPqsJeLicuMnHFzv+RHx7ZA86/fRyrcj0lN4BCKzgM0R7crSzxlAzcy5DaETLP3qt+K26NtPFEnBtSXROG+y80NlOXBWDlmFtsBR8pTOxmjYQVg/8+ZWq+cmnSeKafidtIlwENI9HZACnPUnUZLHDvo0Gr9zwU5qSt4UuT/fySUW1N81zs2RZE14PYCEa+J+L5OsiWc9AMD0ks1brcFdOt6gXGYcW6HsLF4DAOj2NzFGzr1VArb/3HtnuU7XTcj567xx0n3zugEJ187prxxcVFsmMsa9403ZjLEKK68WM3XE1bPgBWeHkBvHZsvjLo1D5bVizVacTxk2pGAUayOcIqr1KLDxZrg47h2mWvZVxy4+RAemu79A+fi8kXq6jwEOqyQrL1/VLOBvjM6vi3PVMDzrBgA975JNYNExFFfgrJzVuvrZt6ZBYQa0J2S80l9wlLaIer1I7etY+flcEYAOArpNMpLA58d3FDgr50lXywYw/Jdk5TrXpugNfMU7jY5S9KwrB3hz/qeznmJTJjckksjK2cSSyKoNTUYSWcV8/32yChtAwOaOjPHp+xgMez2jS9wbB4ilnZNUgfPraANYO1R82wVvV6oppg8FLvPJGqZiphn3aWt6AHG5K+VF7oum3pr2OXsWKSZSkvWDKEPnY63AFTsisZDmziR3RgzLZiM1BvH2JoaWdUOxyKCQgphKNoBXPnlvyYmkz991ymafsU5nsFawmyQhW2S8rOVkxllP9dsLq2RSWRs+RcTQPodNJGBTol0pfQ6ysX3GPOwAkFNFWQ8+qzJPUysr1wK9rvAzUVBzztZZKH3upjx9tipJCQz6pZOJw59DbpPKSySoO+I27UbyKYjcmHTSZsqTV24p7l0bM18pelKSrEgBIPszuT8V1GWXUI5z2iEMuoA2oWy6TmdDUk3TCXOOL4/GfR/WPm+1JrSmtljcO25w3sdIOu0E6vC1SDdG54Ks9eqiFRCwCdGulD5bVKsfEGt81mztCvjb3i9H41sOPzoaq2rJGFKzyRdI4PHNE26MxmeMONh7PbUjRBEUzKbsEJeKmP3r5B8f8UfxP7v589XHy2lj4N2k2OJ6yk4W//yq/SQvveOnnmYxcNw7dG/7jxP+oNvf30/N+dve90djlrWipD5d38+bJ0i1MMs01v1GsqodTYH6cU4glkEuneV7lkfj6qGyCQ28W2/KWQsdqo0UKi4VojmWJwB0pCA8n5aCBR+wOaJ9+fSpGcf004iPplrPaaBY6cC/i+tn2X7l0TirUd93yXuiDPm9Bz4qaYyTLtPWJ5elc/CWg4MzztbxBlbaqmDoRlEkFb/UJG0MViSzrt4tGsfK4F7ZAGb+QGQ44L6YbBAPr9D0c5378ciHZeMq8KqfCStqEnkAfpkExRoQ0BYZGcideHl5NOYCHwDaz8vZMuzeiUltm3+6uHFWDpUMm4prq9Scml1EgTKVMH/+/KO1T7/3kx5F61GyLh748IlofOoBP4zGTO8LAIYsfW8bRJIh4MgxiQwBb2rn+vDhe+UJeKkk+OR08Vvj1ZQbdj9I/vAEfMOmEZCJyEilzwGzlaN0MK7z21Xyh69x9gCnwTcFhpVlSg2tbYnDB04pl2YpUTV7qBYA3fKx4wekmKkILOtLvTE0bT1ELsfHae7w9SiCsFvlHroeT/7nGO4dn3yVbIFE8lWyBRLJ16xx0jwp42bekVT49ZjIiumTAYdCmWMZtFGpxu5wYiFU8BbXtJ03kaWPiJuv2089lNjQbr+FPxAjo9d4il04353K6yid9CchnTTAj4xU+pzSx2mZADDtHuF9aawXpVJxFbVRLNZ8MDO/UxKNy94RhZM/q1o+xymLZ9ih1PlqOfHRLNGVskmapptumgzOFlPMwtPjNi4oW7u7UDAXTpRNw+1Zyt27uKmLyoqJOYVwQ5OiSgqQuimotF6+U0jVGVqBlz9C1821D/1o857tBHv5tELut7r+JdGYGUwBYPZPRAH3f1iC+GtGyLUVfaXjIhzcbqAsn7xZ1JpyPb4HtbtVqL8L5tPrPN+D+mHamMmrElnzevN7F7wzUc0Jm0j7R8Yo/bmXiQ+bqxM5nxpwCMYI3Jqv+zid5smNq9vw5qfAnZQAoOgTl585hZhipsYBUg26eHuxzns/QyRk5L4A9I+QZdD/dk/2kPMerBQqf0XN5f/mNF7x3Pe3ITd3Q5r9T7nu/j/2WOAxLqUkcgfiWUgDAtoLMkbpewuGXA4cUrRKKfSgXO847nVfmmdc0ZRH4cQ2HydwdWy3Rz9XzzXsKLQOjYVybUp5utku3LuWXDVsDce5d7xuGwfeCuMYF1ci+caQwdUPo/qEjyRgzHICEsrK+ZyksgoI2JyROcVZXGZPx9upv9Y9cofeQtYo+ZYt5fm7StL0lLRI5nNRvnpXERGpGNhvXUz+dUfps8WZM1PcRZbSC4/5UPv0n9pPNopcKlBTG4p7P+SSYb/1mr0lK4Y7agE6R517vfJ7N7t8+hNF1izD5o7UA8DZNFiBZm9FLoyEa5o3idaRNvK8OdVqTq7LldQKH88SAMO02vzEmG2iIa8bACw6TFxR5/zyqWj81H7iKoojdvMWmDmnxMNflrTR/5y8p8zxrBWg1yvJWgHatRc2u8xDZlj6DmrGUBbIZ+L/Vb5/V0nGZai0wlEQq7eWDYXbLca1JFS8L8tpQ+lGPU9dnnyugmULnHzbcVY7y6O2RN6r+3+1q0aB7tV3n4C+1/oucm1c1Namire/zOFCOt7EuKk4oBuLB0UUEBCPjLH0WXl1nFIdjVcNLfFPInoFdq0099AZP2aRBN1W7ygByQ4fiZJbuWMfNcfHg64UvesS8ijqtXtJhk7HKZpszHd/xVQPkOO4jRYeKdZnjwfF928PGhWNV+5Wrt9vvKRscuBTKXrnflgZ59L9xNIKzxUr1/u6D7SLy7MNBwQEfE20K6WfXZs+RbJ4qQ58qpxsdoFwpke24wOnlMeiV6UQiM9BxS98CYWBVGlKCljFEfrqIDMoDpDdURR10WziaXEoggu/kAyT+kOJQpmu2c0sYkXPKJ5CAd4l1eo5debjVMo4uocKschzqC1iUqvd917sigCcNElynwXq4ICAr4d2pfSXnSupkEXnxbyQuz6VitvEUmBuyYmaR6fHc5IRsnZPSnF8k0jWXH8pEYll+bJInB6uvkDu3CtlQ+t/gc7EYSs+56v0KZe3faULk06/8OfROK9G7On8r2hDcZgsV1FxVMeXZINbeejoaNz5rSo1Z8YxoowHjRV73JA8rGO1z31K4gp9z5MTluql68qJ+X9I0S+mdezxnI6FcNaQbx3jYhQsU588AX/j+hqPPAG/TKeeLye0QWOr9bV5sqNiGWJDUVqAg/bl0x8q+ffTT5GA6KB7nRTAJsoiIf98Ux/xJbuW5N2V/43G5+x5cjQu+Kf8iD6doHPHi6eJr5qLhJQydTNXOvk3hFas3FUTyK0qE6u77PH0Fb13vP+Y+vu8McfJH741jslGqtuV8rinkDJ2ufG56ImDlRSUbRNvSLKOvIZAonXkNQSSrSOvIRCzjhzPcWMuHvnyOvIaAsnW8UcjD1HPBUUdkBTfKGXTGNMPwAMAegFoBnCXtfbPxpirAZwNoFUjXGGtfT4153IAZ6LFFXuhtXZ86vEdANwHoBDA8wAusuu4AF8g11c52fIA/ZA5jZBSBSt/pf3zzO2irPHOYsnGkaep9M24RimedEHVlnGOkyLJ7+HjnHd7sLo8/mk+M45LXiGu528SbvwYGfisTzdo713vmM+pvEpiM2p9yeXWZk19pG+etQL0eqlG75yV41TxqrXz0X/7muy48FBUtLkGX7JCwqY9Ae0H31Tp9wbQ21r7sTGmGMAEAEcDOB7AKmvtjc7rRwJ4CMDOAMoAvARgmLW2yRjzAYCLALyHFqV/q7V2XNzns9JfdaL0dy15k4KLcT8OH5umm5/NVupMp7Kz9a3cH65HdguPEEuy+wT9I/Rx4njvDfDfXwxTqMrTT3BvALwdts5+461ofPfee/IUzPqB+OH7P0DWK/HrVF6sFTgzVs79lyhmdvW4BXfcxKR5lMjXq3ARFFbAlosNWpxljHkawO0Adkd6pX85AFhrr039PR7A1QCqALxqra1IPX4SgH2stefGfV6ilE0nldJLFUBWe2OJpmHIoYwbr7XWxal6pfL79eo6xRYWcbMs21NXsHZ9hVxRnpOHuyE1U6Vsc6HEHrz3iaAkAwIyBRssZdMYUw5gOwDvo0Xpn2+MORXARwB+Ya1dDqAPWiz5VsxJPdaQGruPJwZnhKzeX1IPZ2vXJ0b8VqzpucdT6uIEyZDJnRbT7IKycho7S5DMneO7Bv78SZfozJVBT4iPv75ElPGKgbIUq/rrjbjrKzJWip46d1VeWqLmjLhSRM2H9xlniTwG/l37lTlgPPcEeV3Z39NnAgF6o6g9apdo7JMHADQMluv2rYMrt+YckcmIP1TJE7Rxrt5e8/b7ZDrsJtlE21RMe2TK8nQRJ9NWsDwBLdOw2QZsSiRW+saYjgAeB/BTa+1KY8wdAK5BS6bfNQBuAnAGgHQ+BxvzeLrPOgfAOQBQALHImYisA1UnDl6hy+8ZfcZ6qIxjqBuY4TGX0xo7a2uaWTL3vEz8sotrxF867P807TMTs3UgjqC8anFnlD3qb3TCG9KybcSaH3FlMk6cIt0oSoNcMn0eI0XtiV24yFtBTWF+63cj5XwyNRo3jpagLle6Dr/euR+3ojXN9XCqLQAUvZbeJ7/wZMn46TnOcaVRkHbEbyhoTZvLwiPK1ZTyP1EdBNNF7Czfy8Il+qvOlCC82TJpXeHr+n68jecb6WTruAJDxk6Ai0RK3xiTixaF/29r7RMAYK1dSM/fDeDZ1J9zALB/oi+AeanH+6Z5vA2stXcBuAtoce+0Pq4odR+vj8Y1/ekHAKDLcmp5VyPWfX1/eZw5WwBg0fdJEfwnfWOPtfSDBIDCmaIIlpzImwil1jnus6YiSvOkx1WTcqfXK7d25A2p62uOwiKsLRMFsXZbeb8e/xYF1egogUUXCJlb2eOidJceUB6Nu3yqYxQ5LF96nOXGsgW0fBUVRam4zwy9LwBvq8zGbaWorc2pgYKlzZ1kzJTLa7ZxyOCqquVzuA0iyar0b/pr6yscy355QjR2tyxfUVrec1R34D4ZlHbABsA6lb5p6St4D4BKa+3N9Hhva23rr+IYAK0m7TMAHjTG3IyWQO5QAB+kArk1xpgxaHEPnQrgtq9zsb3eFoXDPDFdn9B54JylsGZb2WeKvhQFs/h4ze2yiraj3P3EtcD+9KJJOqumsZtYwDnEvRPX9m/WwXJyGfRHD0d7DH2xeo7zzSm7BQCKPpX0xyJOq/S/s0pX5AyV0tfJteHwwfDn5qx00jlT6PlclfpbUTDTmizZWdZ0Zbm+ny6TZIF4TXIXOFz96oMoK4b5ZbjJze76xDforfRxElXxHBNDSpRlhJAhE/DtIUn2zh4A3gTwOVpSNgHgCgAnAdgWLXqkCsC5rZuAMeZKtLh6GtHiDhqXenxHSMrmOAAXrG/KpgIXpwA6N97Du9+mSIqVM4/5uOw2KuHP4RQ4vp5m5/Yoz/3E18QSfPiIvaLxjGt1kHngRaQ8PCmobqqeLxPH12Qd8Ms3lr7YJzceu2mePvm4NQCEJLJScgISyarN/bDbpF7OLsqtxZXdAEwNpcv6urO5uf2EecdR/OSJZBTbAQFxyExqZU+uNwCMflNcA5+fIUVGpp6sZDd1kd5v7V5SkctMlJX/p4umRlwjzxWNlfdec5womMaBWpFmrxTrkzl1iubKNbs0BayYOJWRXUKu8hrwTHU0rtpXLFPVoKVBW+2MGX+W1w28jJTaau12aX5Q7nXiNFGGe40S99niA7XS92Y6hTVNvKYzDyEDhF/nrGkjEeLN21vm1BG/39BbHVoM0glJ1hfQaxw2p28fmaP0qTE6W2Ft8uV9TUy4IKbRcaH4OPjJYmaXEgDMPFx80OVPiOunTXtABlmcDeXyg1T+aDfI7HMfLCeqgxj6Yl/HMW9RkHOdfKKxLHcAjdtIIDZ7jcgwa6nIoJ7uEwByl4kyVG0ReU0andMBW+3s1qI14fUAEq4J3ycSronjfkuyJkERBmxKZAzLpjr+xxQmVV4iFknF7RJUZa50V+Gx8mDv68Ijxb+veq4C6POmuAJYqazegTJ0HCpiPv7nThd/NisOLuByoTzDzDHk5OnncDCYFKivVSHgbA50nat3FcVe9JrOKPGlXNYPlzWYdpzexCpu969DBJfnyCMfQyeCgQv8xXNqI/fIBnAyi5Iq6nkSB0hYQxsQ8K2hXSn92tESzCv4goKLjmU84neiFFhZNNwgijnvFP3eTR1FgWeRLzZnjf8ktGRr8U2XUavVDlOoN2pM56xZJ1M1679oQ3GO9XwPdaViqRdMEoU760SdWdT/GSrCmpM+BbSND58UbSMFcnnjcqXROF+uofFAMSp4fUZc70+P5XtrVOuj3RRNHSSDKZdy6ZfuLJZ56UvaTaF85Y+SfLknwVy9afH6zDuP+uX+S2/4DL6Hes/6LNlPZwmVPibJB5x44BbMMcJpIWBDoF25d7KL0wcnuRE6AAy5RJSum23SCi7aAoCye9IXIKnes05A0tvYPKZXq2++6mN7na5ZG/Eb6gnraV2YNCjL9+27Z8B/33E0yz6umrj1cXvhpn0vAMYNoqfAshr2V73WWV9SNlJQmAFbEDLHp0+KzEubC90AZOJVJdG44ipRNs3FOkNm5nfkdWXviBspf6YoJW6A4qJhBynEyZ0gQS53A4hVmq1gnn5AMVby+8W9V+1uEuwsnEh0zEQdUb/TcDUn70OiCPZYn3H3o1xMVFvgZuX4WDLrxsg15783Uc9JEKNQndGgN5vGevHdr8/3gOmTZ/9E1x30f1jSY+ccI9/LPjGVzNxjIHuRyNcukQ0+6XeniQrcslc7GVDr8d05eYL8nv69gwTA2S3G3yMgbKqbGzJH6fclCziHPFOOUpl4eXk0tmQwqvL9mIpcX7DT/aHwD5ezM+J+XN5TgC/dEf6cbhXY3oxl0Aaee1Wbi0tuR5vIogPke7B8H7m2fg/p+1E9gD2nECbHA4Bm2qt63R+oEgLaJzJG6S89WypGezwkP0hXwfgsSW8ZO6CU5vJ9RZE1kRIoneC4IsiKUp+fkHyNr3PFcLm2Lk/rYjOlsIgWuKGnzFHNwgEsOVjuQV13DM99QEBAZiBjsnc6V1G6ILtAnLZ/c/cTK7H/Ao9P3qmq5GN1l7dJmdOmuGaUpvstpLih6UnNvmOqNxvLKHDZUSzTrm+Ki8DdhpkEjPPkl2wl/C0cSAaAbuP54mjTIF/9shO0m6L7I+ktWw7Q5i9wTi4ke85fz5lFrpaEsZCGHcVFlr1K++frulPTdXLnsdzbZAKR7Fnu2V9MS/v5gHZhNPWQZHbu6rXwO/p0wNQWYSMN2NzRriz9lSfvGj2+lPTVkH9pC3yHfwoZ28eH0ebA9+oGBin3WvlVKT7QppiJ3CHcJanTu5I9VDdSB2XZN8wKYspfhKFyxJ+0b5oVPadCKv4gxyVUN0b89ZxFwr7Y2P4ALB+uEyjVc+q7ijKuLxa/Octg8aGaMbPbWDnJBCUZELDhkTGWftd3JfWw6+uicKffooumzKGiaG2JKClDlmDlFV3UnIoLKHBYTvOpSblxidAIKwewwpPH86fq4K9vi+U0U5fNk8GKfuJtEvhU1w8gfz5VtObKicJHzwAA1f8QRV9yulThTr+NrOkv9LUN+ptkyCw5USxglkH3l7UbbPM2MwICMhvtytLPHiXHf1Vh6fjnf/7yc9H45j0OSP/GHXTWhksv0Aqm9G1T1ckcMlS1OuUiUX5tStw9gUv1EjcI6slQmXW+HHf6vqot5uyFwttiOxE9NdEsu24WtrqTynrhwbJBcvHaz996KRp718DBN5X1kN/pbJlEqbNOc/g5N8nf3MnLlhBP5mwdP1EbaYL1bXNtCdYX0GucZH2BeK6lgMxFxlj6rAim/Vh+7IP+qH/sN+95YDS2NdS7ln9otTrbxZt6yHwu3GMUwLzDxNVS9mRVNB76Z38hj7eSmB53fcY9/yMbB6eGDrg/2efU9RBLPX+6xA4UDw+AWfeJG2bgafKZjTGBaWYn7UEy9K0B4KwD0yCwrB3XE9cncDppBzpEuEqeG7EM+7W4lOxgKWQz03TFdNc7R9BfovRNNSlw59pqyYXHqaYs3+k36u/OoAtEuVf+Sl434go5jbZZXw9pXFOVv4I7IMBFu7L0VWP0MgliZi2u1pPIneEt84+x9NkH3X2cKD+Xe8fUiq+blcLEy8qj8fArdRMVFSOgz1x0GPXVfURvYr5soKQy8LKLJpQB++BdxcoySSIPQMskiTwAoMfzng3Ok4oJQAVyOZaxZt+R0bjD/+byDK1Mg2Uc0E6RMSmbOWWSPcMsjG2O8R5XACuI6ec6bQz/Rm4Y5mxZJb7tiX/WxUxxLfR8YDeBsh75NdRMBAAmXybKefjFnq5aTmC68nLuqiXXyYyOWfU6q2bSWeK6yV8om8agf1MVsOPa8KanMtWBU0VsPJ24kub289r51g3wr93GWjdAr12idQPU2vnWDfCvHVceV/5phJqTZB3D5pZ5yBylT0qFSc1cEjBfE5OGQT2jcRuiMPZV+4jdHFkl6fW66HDHYn1OfqDdnpBTyJJjybfsFE3VDyTmRwrkxtUD8CnATKpKe21tXE18f5775k5VgHPfSWSImHWg+fVOExWuQ2BXXPazsoF8+ZXmH+r6qbhDQlplwJaEjFH62R1FmZ/+sbgI7tt7zNd+38bynurvnKqF6V/IXafcwBwpM1Mqbo64UvqqM2UTqCsV2Xeleix2KSXF6h21wuvwkfiqT3td+tTf84PvROPsxfp+fLw+zMPT8WEdC1l1HLlQPEFDXjdgw66dd90A2G4l8gcX0nnWDfCvnW/dgA27drxu3L0M0OvlXSvn+7bLeHm/t8/ZKRrnLKiW96J7BsKmmAnISKXPML21AldWJpXvK+6ccp0/D0rNbNqKmnXPph9XB53pwQyNvmpf9wfFr+Oce7eiVn2OjxaY4XC8r31ArmHRq3KvA+6visZ1w3SxWf5EkUHllVJ30PM92fhy1urvS/F4UeBxip6h1ovWqqG/nE6Y4hhItiZxjJm+NXGVpK8OIi5dV9V4UEP6WUfImOUOaNmz3JkQr3iOJmr2yTogwEXmZO9w1gQHId2espw2V0CuElL0ZqluRccZGfVdRUHkVJHfm9viwcl+YeXVT6zHhhHaWitYJC4dVvT3fPB4ND7te+epOdmUYNLUSxQJc90w6RYAFJ4qFnDvYRTXoJ4Ci3bQ6Zf9Joncht8rSkX1enWajvhMBu9aAbrYq3tJNM6dTWyizqacXeNpTUlrsnbvkWAo7h1q/uJbNwAwTXJHa/ekblufSNYTrxUA7PbMz6Mx11sM+IekTzYO0IYJk9tZ+r6WvUIMsQ7NR1D0ARsC7crSZ7/1ij3Ko3Hxj2erOVnfF6XAP7aZh0nAbMA4rcDn7SXP9X9KTgSNpcStP0tXyjYMFIU+4ygJXA67yX/E7/qEKK9lx8ocDtK5sYPmXFG0bBUy3Jx7TkvMWuTn92f4iOJ8gVcAaB4llikHFBmuspr27+2icc9nZOPp/BxlOrmkc89IIDXJ+gJ6jZOsL6DXeH3Wl4PHvI6cagsAeZPTn+z4e+DGiTgWkuQ7Aeh1XJ/vhA9uNTd/L3zfiaQMrbHBfQp62/npXXthc8wg986ys4hwjQKibQKSzHfDzJH8OvLVA/Dz8rinCJ5CPlffl/uQlzXt858+lEKl4s5i9XMhUCw8hTxxfPpMBcE0EM0VOoOJ+WW8WB9ZO98xn9zCjzUgYMMgY9w7S3eXI3qP5+gJR6lMv6kkGnMRDL/uuy9NUHMe30+sT1b0TdRYOnuJtnKzl4qSqt2VuODflQKdZ0dqugf8Q5ShT9HzKQYAOr9VFY1tEbVopM0lx/U5N8u95n9F8QrmcXfuh90wtQPFRcX3s0EUM3Xbaop5WUBAwIbHOi19Y0w/AA8A6IWWFqB3WWv/bIzpCuARAOUAqgAcb61dnppzOYAz0fKbvtBaOz71+A4A7gNQCOB5ABfZdVyAN5DLGRiOwqsbIpYkKzznxvTfOVTtuFz8/SsPHhWNO79dpeewlcu9VovpCDo3fSonANQcJO+9ZBv5/EF3+ittfRkyS360m3pdt0/FzaAyXPi+cxz/fJL7dlhDk9x3sOADAjYtvpF7xxjTG0Bva+3HxphiABMAHA3gNADLrLXXGWMuA9DFWnupMWYkgIcA7AygDMBLAIZZa5uMMR8AuAjAe2hR+rdaa8fFfb7y6Q+gPqMxbhdvYw7iore5WuGZtUTb7OHhifscddp4SFxH8x4rV1MKqilN8x0p2LEdqKAsJoCX85pkl/B7lz3h5/hBPmUw0ecYh5LaNz/Wx+qRAVfUutW0s0+W59ZsJy6uYedOicYLTtW8M4bE2/OfIec+ICAO38i9Y62dD2B+alxjjKkE0AfAUQD2Sb3sfgCvAbg09fjD1to6ADOMMVMB7GyMqQLQyVr7LgAYYx5Ay+YRq/TVtXQWhWNWkmJ2MjCqbpPsjPLzJVuFG4Qvelhnh/Q4UYJ7nJfOZfkYpJtbmxUUJKNer+YUmV/WpBXeor8TB8vLEtRt6C/ulIUHaYVXSySXQ78vyr33SqJr4J62AH7witBc3nPO0dFYpYbGFGepgC3f9wonYMw9bul1TCXhmhV976QGOHxKow2l97OaE0edKOhec2KCzCqFdGtq+xfz3fFRcKhgZ8LvgXrddJ1swM95v0d9dUotVsj98feox1li2HAbUQCYu7dkrzH5n9rIne/OwsMpXfeZ9KfONsFfvh+Sr0qPdbie3HTmdGiTKsvGnu+k7cbrKGON73tLNRi+ViDXGFMO4A0AowHMstaW0HPLrbVdjDG3A3jPWvuv1OP3oEWxVwG4zlp7QOrxPQFcaq09Is3nnAPgHAAoQNEOe5jDAABzfiUujKZtZMEGX+j0rqWKVv4RdR4v/vAZd+psitKXPBkZ/AUiixmAonjwVcC6XyzvPVxKhVJMHQHE88u0wqniTXLfnadpXqKcGeldUdV7l0fjkjf85F7hBxUQsHlggwRyjTEdATwO4KfW2pXGxxYJpHvCxjze9kFr7wJwF9Di3ml9vPwR8k3fs7rNvFYs20OoH7s8Lcpv5XGitBf/UVt4pS8hPchKaOypLaLsz6VIqLGYinroNUvP1b72JvLi8GaV9ZCIp/kkfQmNAyRGYZrkeu55/I5ofM4ux6k57IZZ+T15vGsJWVcOj45i0xwqef8lr1fBC9oUaw4eHY25kMhN75v4R7FgB90jjy8fLsJZpQ1WDP6LWJxaVvQVcuINiw+gk4enUtatzE4i37gTRUDA5o5ESt8Yk4sWhf9va+0TqYcXGmN6W2vnp/z+rRpsDgD+yfYFMC/1eN80jycH50B7GBQBIH+lHPVW7y8Byef+cms0frdO+6ZvKaIDh4eZM4c4zAFgwSnihun5jmwuheMkC6bHoQ7H+4naddOK5lOI7qFGf07256RUqE3kOTuLNl+zLYtWtxRkpbTd82LNf36Y5uvhNo+rK+QobrPkFMMyBLQcbzmIZMg01M7ppOKS9Mvec5Yo/WVXlaZ9DQA0HSn3U08tFvOW6lgMs4M2+hTzfH264Ss9o98e/ELv9QQEtCckCeQatPjsl1lrf0qP3wBgKQVyu1prLzHGjALwICSQ+zKAoalA7ocALgDwPloCubdZa5+P+3xfcZZyu2RrH55qCcgFR8SUOPvIbjwFfcfLnKxqsuQ49zymmTo/N/knYvUP/Y1ucu4lSUt4P1Ou2ioaD7vZXyQ06wcSLPXem3F8n5bK/plaILhtAgLaFb5p9s4eAN4E8DlaUjYB4Aq0KO6xAPoDmAXgOGvtstScKwGcAaARLe6gcanHd4SkbI4DcMHXSdn0KcnYDkUUPFJBpZiKQm7SwVWZi3bQdAKWHVb7VEdDlX+fsJiJA2P1u2gKZ19fXZaHG1gzpVQfwBvXJpJbXYW4cOqL9YGy+H2JCyim0jlyWppzi66uVV2sQjeogIBYZExFrksfHMHhg6kbLq9b1Uf8+KUvkmXMnPuADp6SYpx8oyj9YT/XroCmPlS4tVyUz8zjReH1vy1ZQ5SkpfDcAGTlOaK0697TbJHl94oPXJW7c6YGVyEDSo5L95OSfZZb5e+0sz27SDYUls+K3cujcef/OeXy5DfnDSUo8ICADYOMqcj1oXp3rYhK3qiKxvlMtc9WrtvYg6zUyT+TlLVhvxSr1FXM2cto46D3HnCfKNwpf9dEaAP+Si6VqaIkl35X3DbdXvC7bZh6t8NH8vi847qmeXUL2MXFGyKfIACtdEtfTF8r2/sFvcGWvDE77es6vyvX6Z4oWNZTrpb7HjBOaiXyJ2ofuqq34NQ/LjBz6ium/EmCtCz3PJL7kgPL1ZzSx8UdFzahgExEu7L0647cOXpctbmjDBvAX0zEPv1Vf25Qc4p/TG4Ytvqd92bMP1b85r3uJ4ueq4WdYiZF60D86GuIjVOxQzqoH0Z0zAvlPrkGwUWiBuEAakdJMLjgSykQ44blNRV6c+EsHe9nOumkPrcWK1lea8C/3nGFY7719q61894MXuveD+vN0jKDJ3/f6Nrs8HI1p7aXuAp9681rDfjX27ixJjUp1/9c67WM0kkASdbeXXfvNfDnr8f3IGD9kDHunaxtxLVhuNjFuYeqX0iGTIedxaLnIpY5J+mOVt3/J0HZeXvJF1jNv1BvFJzlw7nsnZ/1854v+LmkcCb5TPe6m3vID2/m0SWJ5ihwTKHZWftQxBIQkBHIGPdOVg1V+pGid6v2ageK5TXwXEnznHKhKPrBD1erOWaaWFsD51Ml5INk+TmpnGwFqVx2cj9kD9RWVJ+7qBqVrMKBwmmGSUN1JebWT0mK44JjxU3R51XZKHJv8ufcM2eRsoadvrps9SoyNwoKq4pTB+q943rk0npV/lbcTSN+JdbrlJ8M4ClqvXitVNVqk2OlU4ovr5VZRhuiY6HaYmqUQ3QYYeMLyBS0K0vf13jbPaJzdWxWNf3wiYrYzarhfG9wEe6savljlS4I81EEM5Jy1aAz0QkkddXEZOLw6zhDpq6rBLYLltSrOT5iNn7vOArn6T+STbWARF1aqQvhOJbA/n0+aXAPZADoMMHj8vqG34M2XddojZOsLwBvT2bf+gL+NfatLxC/DgEBjIxx73hZNl2LlbJQVACQTwQuYRt3d6If/vJ9hYuly6sx/U9ZSdIPfM7hTj0A8c6o6TF+90S9Z51NzHuvnvsEEt6r29yEq1P5ObLAk8rADqUmHwuS9RdgxZztFM8xuNF6XGtKH9FcULIB7QkZo/SVpc8KppMTwCMGTS+TZFLlFSMftlKZKkFx2MQVdDFi3CHegq4YGbDVu3h/cTHFNe72pY367hPw8/XEwtOvNijWgIANg4zx6at8cz6WO75cQ2yEShnWisJ1fdM+S/vW96Uf6kFP/kI9V3GruEOU8otxOdhSyZNn37Jd7GcczC4m1w/JoOZxUcCdTnMaohC6/7cq7fw298x9aalRPHIl6yL7M92wnJkxJ10iJ4WcvnKKGHS6do00EfUB02VzMmjcyce3JrweAHQMxrMmvB6Asya8CfLmH8NOWkfNdAq+0BTZ+oPWTV3t9tXNqaaYFrmHwmYZ8HXQfi399fDl+jh1AKCughQe+/S561R/beV6/bwUvFVBQ0C3O6Qen7FplQn8/W3me/z93lMD4JWpV57wx0l8MRLAHyfZoD50YIPKzRcjAfxxEm/zGgT/fMDGRcZY+vwjXjVcUhc7vPKVelnVkRJQHHhjVTSOU6z5k0kpcNMRsvay52jtpci+eD67lDpo6oaZx1HB0D9Igca4d8CZJ77sG8c/z0FRds8w/3wbJdlIfDt031kLyQaPqVtoqhGLtaGTfLXc9Zn+CynIGnij+PezOVYbo4zV+pCsVFAYQH0vude8lQmtdur+ZfheaX1yPtGnnVy61nnHyXevrIo+MibQrk44tD7u5pI71RPg5++Y2wCIviNrhshvZsVAOb31esAhBfRQcITNKTPQfi19hpvlwC6UVWTd87He5aqhH+Gy/Smg+T9yu8zUAcDeL8t4wXEl8t4ewjcAKshceY0EOysuoJzNct3ghV0tsZa6D6zYSKlhpZYBy2TxCVLr0ONFqq51GE3V/SW5N8DrRoo97fjcIb3kdNDcqVBPmSzV1EFhBWxJyMhArs83DgAr/yE//rwbxbpZ3Uusm9I3tL9VdSzyuA/WjtbKuPBzj8+WuYCynGN9J7Ikl0q2ydwTxELs84jj2uBKxnqnQCzNdbZ8EHXBopMCb1xx6Zdx8mU0d5ccfmbw9MrTuVaWqVeegFemPnkCWqZlf09fH6HcegDyZ6XPGmI3VthAAjZ3ZIx7h8vq9RN64+r0Y/q7SX6sNf2krD02kMsKpkAyTZoKNe9MtyfkFLHku3TEJiIzW60VRNMsUWzZI8Q9VPYSnSiKtMXKgerl+5RH45L/UKOSOCuZFD0TrtVSrwEAKL9MLPIl3/X4yp3NJYsULbeWVIoxRknmzhOXRUzX4/VCz1uoOTs/wWmvDp/+hr6GgIDNDe1K6Zvq9BYns10CwE5//yQaP1y5QzRW5GnOe6zdWrJICj8jigfykXZ4+Us1Z1qudIrqbKvkCUpJdNuF2e2GRuOa7uKbLn5B3ttt+NHrXcowOZZSPuOqa8nHP+kO2lyelFND8SS98c2+Wl5XaEkGXPdQra3plYeQDN4W1ZrDpGhOmmrDEHH9rPXIIFjTAQEbB+1K6bObY8m+fb0ve/dnQtY19EOp/rRc0OXwwhd+KdbwvL+VROOyc6vlM4/fCgzuzMQKeMlfRJF1O0srPNMgVnund2UTWk2Uyb0vm6bmLDnWQ5rFVrcbyCVUXE5ZJC6dMqFwuSfVlXz/7oliyQmyKXb+hE47nB7rxk/e/F803v4jkdV7nXaAD8UzJSsmj9Y0jtyOYz3z/irrzWvKjdABp46Bayx444rZYBX8LUVjieIiOJTh3rXzxWyANnGbVky7VWIhgy93XsNr5zu9BbRbtFuffmzmCqdFckohwfTRQVA7V475qhiJWDGbCvUeycqHfxBVvxdStSG3+1MPvcVQG+DaFm8jCquvGyNohaO8OIU0/MADAtovMsanz8q8qbNYldlulasnH7+5Qqw6bnoCaGur8g/ifhhxuZwActwNkojIuL+sHZy+ly/gZPb0FKW9dHdR9F2fiGmxSHNMo5wa8ifOVXP6TvMsLSl6VvKAlk8OyUdx1TgnJOXvTxJwBlB5nQRPR1wm183890MvcYrVqEDMJ6uwUQUErBvtSulf9uJT0fi0t0+PxhWX+MNvjdsOicacX+2eb2p3k0rKEZcRnzgFj42Toz7vBhFf2Y/luD7kLHLPOEf3tXuLG4d51Jvy5IjesMMwNSdvjva9tyKb+GniUlD1BaRn0gSArIni2rAe10Sb04nvpBhTNNX1nfTc6yw3N66RUyYbcecp4lJq4FoJh1NnzfbC5cOyXnS4ZPWUTNGFfXlTKBfe7a7WijpNVMcukKSuGjXHx5MUQxUSNriA9UX7de+sh7+UA4iNTiYOpwsyZz3T+LZJcSRFpFIku5XI40TPCwA3fPliNL7g7AvSf37vUjWntic13PhEAqx8nVmLnFTDBBW5AQEBmYmMce9UXlEejYf+W1w4zflagedOoHxx8vebJlHMBe/ogqHaMcSZUikWI2+JbjFU/RBqPUgWYmOJuKFy+unuR5fseqxcZ//0nYOME6MoWqL5YVrB6ZJuV6LK30qgbsRlckKZ/yMpuur3n0X6DSnop/r/Lq6OxlWn6NaU/Z+V57JqxQKu/JlsSCOu1ZWkk6+TTW3o2XL64g1pym1j1BzfeudOmCwvcgyBplFi0Wd/IaeIOs9aA37qhXrqcaBOA87nNjLrJ31mGxbULrSmbN3ziSBbFx3qNdXuvFbEUYWEDT8AaG+WPpFzJS3+UT1UXTplAlvX8/aWH2TfRyibw5HV9uPkh/fx4aQM+fPdjAvOwWc3Ab1u6QE6o6T0JboGVu5M3eBwy/APfMWpu8p7cXP4GLA8lo8SF5e6FgfKFVZDG9dmIIOAgC0J38jSN8bcC+AIAIustaNTj10N4GwArRG+K6y1z6eeuxzAmWiph7nQWjs+9fgOAO4DUAjgeQAX2a+543AQlH31K4boYqZu40lBkKL3ZcsAmhOsz93p8/ndzeXj70h3p+YeovDiuODnHywWY+8nxQqbcZtY1uWn6UAuOHhKxWJxTIt8Kil9hWgU+EThBGWr95T74ebypSscPhcGB6pnU7XvSAqaL6xWU5guIWuBWPDchKXQIcxk1A6TgO/8cyWIX36af05AQEAL1mnpG2P2ArAKwAOO0l9lrb3Ree1IAA8B2BlAGYCXAAyz1jYZYz4AcBGA99Ci9G+11o5b1wWqJiqjh8tnsWsjLkiWlJGRUD+cmo9zcDCmk5FqiO1rzedcqy8HWsUK3Gvla6CMFrcAStEosKwSdtvyIkbWwbIOCNg88I0sfWvtG8aY8oSfdRSAh621dQBmGGOmAtjZGFMFoJO19l0AMMY8AOBoAOtU+oxZR4jLof/t5NN0fblbyymA+d85RfKry3Q3p4mH3RGNj93ruPQX4GRzmI4SYFW59PSa5l5dweBTwEkTJM//qhfF1z/i9zPhA8cRartRNev4L9TrmLN+7mVSN9D/dmJUdOTWOFDeO7ncno7GLDeV5uluJswKSX5rJUNnzqqd5RTS8QORT+0oKdIrmF2t5qj3I2K2NkyUhG3Gyenpkz3kJBQ2tIBMQSKffkrpP+tY+qcBWAngIwC/sNYuN8bcDuA9a+2/Uq+7By2KvQrAddbaA1KP7wngUmvtEZ7POwfAOQBQgKId9jCHAYjJ3slxKhd9vntfhSX8mTCWCMUwfTZP8TbM8LU3BIDGA2XjLWBeea6cdHL71f147oGv370H3wlH3Rug7i8ouYCA9ouNkb1zB4Br0OLyvgbATQDOQFuqGaRe43s8Lay1dwG4C2hx76R7zZrtJHA652RdCDTsYnIIc269lbFinoSjJLlSlRThmn1GglH0mvDE20FyPfUjpfhoRbnOSe/+iFjak34rtA7DbyAl625arLSbKShKrho3ZXPaj8U/PvjOqmi8iGgH+FqAGNpm3mganKIrli8HWNmYcO/HUyDG8i2apTuB1XeX0wHLtPRzeV327PTV14AODJe+Qicpp/bCK7dDyqNxnNwCAjZ3rJfSt9ZGv1RjzN0Ank39OQcA5/T1BTAv9XjfNI9/LfARn9Mvh/3S36d14RHyI+75GnWqiqELZgua3QwdJszSr2MXxGLJJsqnJirdqnXO/eTfiKJ/8tg/RePLbjhaXhTT2EOdCNhN4lQhD/6rBIn3elFSB984UJRc8+D+ak421SSoTBz6zP1f0KmuY687OBqXTJaMnbhUwbojhBupA7laeBN13Tu51Pd4+Uhxa53+i9ei8XPf2UnNYTdO6ctV8nhMT4FBfxSFXnWRpLeW30fze2gXl68JysLDZaPh7x4AP18Pn/Jiss18WL2DXlOWadicAoD1d+/0ttbOT41/BmAXa+2JxphRAB6EBHJfBjA0Fcj9EMAFAN5HSyD3ttaMnzh4i7PIynV57k2z3FP+u6Kk7q0cH433eFz3ux1+u+Ss2wUynvR7YZGsuF4r/VnfL4/G/e4g64+ahJjljsVKPnnOMWcl9+t3nlNzrtnjSPlDWf18itHryBukyw7aClcJzLxGfP/1/WTjG3EF1S2s1PfD8MmK5QQkkxXLCUgmKyUnIJGsWE6AX1ZMSd0mBZW+i8v3EqXb5SM6eThK3tc/YfWOMn/1j6rVnB5npe/fG5R5gItv1ETFGPMQgH0AdAOwEMBVqb+3RYuLpgrAubQJXIkWV08jgJ+2ZugYY3aEpGyOA3BBkpRNVvozfytKadD1ojgWfX9rNafnf/wkZ61wq16zlsoPavH+cihRrIsu2E1RKNanIavfRdZDooiW3SkKZ2V/URz9/+lcv6eVorcHAAB0oDRWtmbJVcOt8ACtPDakrGPhy6hyyOCai0UGm9NaAc56kYur5m6x2jseq11P3rXzrRvgXbug9ANcZE7nLEpl9LXMA6CzM3wcMo7FunbPEdG4YIFYZc03iYLJOVkftzkQysqjfhilfE6el2jOxD/KnKF/0Z+TPcupnG0F0R9zpgrgVLfeJ5TFIy6XrCdOTQWAeupr2/FDsdTXbCseO5YNAJgp8jpfb1XXVcN0GNz31ScbwC8fr2wAr3yCkgzIdGSk0o/Ls1cFSEnz9LlK1MPS2QYJ8v4nXq8Va8Ul6UMZq3aSY73bSNwQmyezV8Yd8ZPIKpakzXdvcZlFSbGR5MYbVSyS+s0T1FQEBGyOyByl70vZdIqmZv5AjuID/kmZGtzG0ElXnHK5HJ3L/ybvlzeZLNEuuoKVg8FqoyHO+7jskEGPkDXs9HdV4ICtJ8e8ibj1ASDrK3F1eLNynFPQgKfFup55DLm/2IfN1wKohhs++bJsgWTydQPtnI+f/57Eab6xrJ3vjvseERKsAaDXwbcGAQEbGxmp9NnlUDRF+6ZnfVdeV/am/EBVwZFbMMTphtSTVimBAq28DnlWOkCN21muR9EbOPLlYi1LGSlxCkIp6iTX6VwrX+ezZ+0bjVke67puH9bnfgICAjYuMlLpx9EJMJirXDUwiWmtxxawl/c87v0SWoW+Dl8zf6qDpQNu0Xnhaa8nLrc/oXvHDi+X6ZOq1v2Z0DLwUkm4vPCe9Yq9nw25Phw4zZegrgvfmpQ/4LiR6FrZ3VQ0hxheJ+sqa7XBsrsppvkMr1eStQL83/+wEWc2MoZamdHYX47RjR21/5erY5HjuUWHiphZO1mpqKrbr2JKC5iigZVSDMkb+LmB4r5oo+QprRFVEoi1y0nh9dTuHVWlTDGK5lJmwnR8+j7lQdcGqkEAdPCW84f4vn/z2atqzuVnnRuN8xbLpmidimcv+HpI6TfO0r0L2EhoLBeStsaOsvbquwJ4G6eU/1OujZUnALXeOWvlxJW1UL5TbbZdJs7rKJs/B7CZPwmA+r7wJqISGdzqdFp73miyhsrmxMH4WLDcnT4RahPLk41UZYg5mz9/L/g7kU+V6m53t/W5trDBabQrS/9X0z+NHr9udykKmnSJpuEdfr24FhYcJX7dTrPFIuNOSi0PkNXdQX746kfoKnDiyjfVYr36/M+A/8eh4FBEVF4tP9CKX6QvtmHZAMC1W+9OHyo/tsm/lVx6lhOQUFYc8EZCWTk9BZLIymUAXXgkFTo9IymSPtm44PebclF5NB56i5ZByH8PyARkjHtn1QnSWGOrX4g1PGs/HYxb9YRYvTX/ETdDyVQ5OrtxgLp+EnicfqooyRFXkNUQk7miArlUyMPuBwCwVAXbptuVD+TaaKL6gqw6cgXEWDdJYyE+GVRcQMrYcYvFnmRawVaYc62KndQjQ0DLkWW4tl9MxbQPHnkCfpmGDSCgPSFjlL7Pp+/6rHs8Ib7URcc42SbeDyJl5hbFJAC7D7JXEY2D4w5J1DzccT2pgC25q+IKdLI7yv2wlRsrG/pc25nmc8580mwXRicnfrKx5OvKLYl8m5zrTyjfgIDNGRnj07/+vSej8QXnXBiNCz/TvuAPnxYXRv8aORFw8Ctr3hKegpnHiF90wANUgBSzKU6+WTYhX9u/6ueGqjndzpKisJW7yfUsHyrKdMCD2mJVKaj3izuCreQcxwLnaxv2cylMWnQCW9BaKc49Wk4Bz/3y+mhcbORrsteE09Wc1ZNLovHQ30jzF6Ukne6C6wWiim6KeVlAQEA82q+l7ymcAbRl2zCYuG6mieKY/NNyNWe3PcUfvPhAUSvHfzQlGo/93j76cziXnFw/Kig8QPuzMVOCwb6iq3nHDeIZKHtUfNg+d0qbzBWy1H3ulJpdNO9M8Qe02XBAkANwjvXsvR52cTn1DT63iW99ASdLJ8H6AnqNk6wvoNdYrS9niznfN7XGCdYX0GucZH0BJxOHT2J02omdT9djOxHNRQh8ZhwyxtJXoEIgVaADYMmBosy6vUFmJm1ww/6kA3hHHC2B0HtGfScaP3ow/XCX6mbUNQeOisYdXxSirtM/loYm/9heX/b0e6lg6Az5sbMyLntan1xOfG1CNO6XKy6HG3Y/KBo39tG+6ZyF5AOnxxsHiJukpq9WrB1fklMI//B/OU3u7af/OFvNKb/Hw71D6zPrSM31f+kPX47G+n5I6TvGyNLvCTsprynTOLj4w9EPReN7fiBrml0qm/Kj+26n5pg8ySY68dWPPNd5kJrTSO0fc4iBs7GHbHyLdtRcQr3vlRNoY1Il+02VcVDmAWhnlr7yUzO97dpaPcn1O6fga28YCw/3e9x7+BqyuGAa3A5T6HUJfd5cGBWXdsfXuf9Lwlb57M/2U68rnEykYBy05orce6mROYB5j5dH47In01c/u6l6dSOIm+h96R7GGw2vNRCz3p61BjbsesfNT7LeLuXxxlpv86w2gNT6PJb+RBEs+8xDxgRyzc5i7dV1F+tq7g90iuOQs4Q/Xv1YKaA45zBN0tb3YbJYOc+eid2cEwWjbphkCeVPlBNBbEcrgnJTzHGYHwsktbPyUrEeVVaNk+LIlnL9ULm2vCliGa/ZXiuiwtfTp4P65A5o2Xvl7uDHb74ejf+6597ReNINcp3DfqTdLvU7SX9kn3zjNlivfAt02qxPvkExBrQnZIzS97JsOgpvxW7i3un8dlX6N87XlAq7PiMW8LvUXWrW7eLe6f9jneLIYLdJzkw6ETh57TVby2ZT/D5Za9zG0C2a6kvVrSuIHdRT0Qsk64LF9wzo+/axkzb21Q1EfPfqvU/Ae6/e+3Tem+81KOOAgLbIGKXftL9QBOd/5W+MnpQ3RsFDW1BHrQ9zl2j2zSR59nGBtUs+eyca//F7J0XjufvqHPWeH4k7Q1E1E90DN34B/K6S+l3IYv5KxyiSUDfEIoEMAS3HpLUKPjkGpR8Q0BYZE8hlJVU7Wgp+CiqdYB6zPZKyaB4pliwTggGA6d0T6dDQUUSU/5WjoHw598zj7rh3DCnDi3//o2jcY764l/o9qE8UjQPJUueTA/H6qEwRADlkNds5Ip/slyUoDD4BAKgdJcp57l7i9uAWgixDQMsxiQwBR44+GTrZO+wuYpdONslz8U5aBj2eTx9knvxzuYdhN+vvgfpeuRQNKaj1gA6aK1puvjeH3oHXJGxcAZsS7crSz3GUVCIk5U7nTk3U2s5LmQzowiT6Ua/YXq6z83s6E6d+sCjGvCpxU3CaZyzLZlLQfTf1JiVJTUdc65m7YhUtko2z+H0K0DrUyrZI3EVr+oubLXF1bNL1SSBfN5UyKNOALRUZY+lX/l6ssBG/EV+yLdaKiPnS5x0twcqyceR/dtkvuYcpWZkTbxPCNUXJ4Lyu8tfi6664QFI23XS8PD6FEKGWISs3x4lRqC5f5ELhWEblNboeoHeZbCIlp6dX9G6wtceDYtHzfVe8RPfgkoARSVr+Z/K69Witkhgdpldtks8JCMhEZISl7zYQyZ5NQc2kHbE49a8jbSIx6XS2hBgriUSMwSmSAPDyAcPkcogHZ+UAcQXsdfYHas4n/yfJ/r4MG1c23AM4az65i9ht4lIosAw45ZKD3g4ZHCOJPAAtkyTyALRMksgjIGBLRsYEclWefkxKoHJbsGVcSv51V3kx7wy5WhLnd3s+X+WXA21rCloRk4nD4Os55OXKaPzf/Ueke3nb6yEqZJeGd/Fe4nrqUknNZz6XVMxYjh+PrNoEYZOsSQz19QZdE996ABt2TVzKZvrcVTtLtlnHD8SVljSlNiDAxTdy7xhj7gVwBIBF1trRqce6AngEQDmAKgDHW2uXp567HMCZaKFIudBaOz71+A4A7gNQCOB5ABfZr7njcPPyok/ErcCNKwDdY3bqFZJjPvRecu84Sl8pFU/5fFN/ndvf0EmCnRz0U8yRizTHjyqFZ7oGbgruUCr4fN1KqThFSpqNU97PxjBHFo4UZVhfIvdWRAHa7BgenTiWTIbhAijmW4/ja/excfrkGXcNpHC5hgHQdQys6OM+h1tDejffmALCwrnUU6BbiTz+uqaKDoo+YENgnZa+MWYvAKsAPEBK/3oAy6y11xljLgPQxVp7qTFmJICHAOwMoAzASwCGWWubjDEfALgIwHtoUfq3WmvHresCfe6dWacKnUGfV3VO95o+4p5Z21Ws2ex6udeuT36u5lR/RzaHLq/qjI5WVF6puWpG/CFBnr2TTjrpd0Ld0Fwo7pXCruJ6Kj8t/ecDfpfO8n11Vg3fA8uqgPagHi85TUs4e8aTfhlntSe5N8B/f0GpBQRsGHwjS99a+4Yxptx5+CgA+6TG9wN4DcClqccfttbWAZhhjJkKYGdjTBWATtbadwHAGPMAgKMBrFPpq2shhdNAsU7lwwdw6D2iVN48Wfy/iiLYcREULCGF50kjHPF73fLOB7ZKq/cqV89VXFe1zvlx2/ARX8k9PPS7XaOxu1GxrMr+KPUAM3+3WzTu4ZCA7fHCuuXmulbWbiXWecXNlPcf0/YPHvmUvFHln0MIOfsBAeuP9c3e6WmtnQ8A1tr5xphWv0cftFjyrZiTeqwhNXYf/1pghTP4r6TknKrXN3eVwK7pJkdnHx0BABS8Qx2uqPXgip3kMt3q3jjagGjOc1+ovxt9wVf2czuKlYOy/z1Srq3LGpEB+4UBwJK3p/g92away8XqdpUnyw2gU4DHtQIAXX4tp521h4qs5z8om0HvK5xtjFo+dnxEvi4hEycgYONjQ6dspqvdtzGPp38TY84BcA4AFCB9ExSm6zV1Wl0o/y/5jDs+QL7cE7UPfMGpkqPe+2VJcVSK3gnGDb+YNg5W1Pw6x5fLodOlB4hLht1NbfL0E+Syd/xKxw5UCiph2LXpHwe03OZ9j6h/H0tf5AQAtT+U9THFItOyc6vlRW4Qkz6H5WH6yCa4dGedkcXy8fn31+49Us0Jgc+AgLZYX6W/0BjTO2Xl9wbQqiXnAOhHr+sLYF7q8b5pHk8La+1dAO4CWnz6rY+zK4D982zJulCulj9Qq0DoQGHvFynI68nZR6OjcH3Knbn+XR4dup7Sl8RStxTEXDtYByC5OKq5TIKtzXnyObc//Fc156h7Lo7GfV6Xa6s6QtIvh92s0yo55bLsv1QHEcPIyM1basbIaYPXhPvoAkDNdqLcO71PJ4pGSRN94do/qTlH1Fwk11AgNkTJ61XR2O17vHZ3Capyox2fDAEtxyQyBHRVr0pbpftxGVrDJhTwbWF9lf4zAH4I4LrU/0/T4w8aY25GSyB3KIAPUoHcGmPMGADvAzgVwG1f90NL3iTlHheA7iynAC53L/qUFIyTErj9o5I7/vERlA3E+epWnw7QKBlAnNlT31kyXwodi5tL+HNmSNOPGVfJ9Qy6wNnEaBPhjl9ZlAFy9k9+pqYc9/s3ovFHd8uG0lRM9+bIYM7hogz7/Zuse2oSkj1T79WN1NGq+P30JG1uy8hODSLT1duK+6zoNbHMT9rpaDWnOE8+d/unq6Lxx2951gpA3lJR1ExtnFVPQebP9eZ/4dHSL6BfobireK3QR2f8MAzVdazeTuS+92OT1Os+OkSeq7xKrm3EtfJ9nX1cPzWH18R2pepwWpOwmQSsC0mydx5CS9C2G4CFAK4C8BSAsQD6A5gF4Dhr7bLU668EcAZaXLQ/bc3QMcbsCEnZHAfggiQpmyp7py+FAaiXKfKdnO658gNly3rBUeKy6DXOn7lSP0yUXFadKJLsL6apKbVkSRa8LfnZtbtJNauKFawnmivEDVTbW+IX+Ytl01ndV8c1On9CBGxUfcyFbPY6nXqYc7LHq85do1bo00Gizlc5jm1B6+VbKxecymjq6TpJyTLTKdB2vb4JfGsA+NeB18AlxON79a2Jdz0A75oEpR8AZFBxllIqFLydeYK2vAb8g6xUjz985a5Oq8AXpDuUIvciV4CZVKXmzLpQ4gADxpIlSEp28i90KuXQqz2++zHbRENXWSlmzIliCS48ojwaFy7WVu6mup9hf5eTRyARCwjYPJAx3DsNQ0S55ywRt4lS8oBiuVQ0CmR9slJsA9ooanvI5lI0T1uiZW9S/jn5b5v6iOU27CYnJ50KhmZS68TBF5EP3bmcvA/E9VT5B8mFr7hcuHJcK5nfg63k5/7zz2g86q6fqDkDnxArky1TVuADn3ZcGyRfDsTmNNMVOMHsNj1mW+dTUdqaUfpzuBiPvwe5s4Wxs6mbJsTLnkupvLT2026WbKjBF2kL3FdjMVHJXWdkhQ0uoD2h3Vr6iqxsqaNE6MfKeeQczGNFCGi/Mx+3s5fJ5nLdSw+qOZeOPkDms9LlwiaH6mDKT8RPO/QusaaX7CH3NvrHunBs/v701r7PcdaRS/g5wBkblE0iX6fYLIl8XZ9+EvmybAFg6XeleI7ls+BokodTlTzzh+XRmA2D0CowINORke4dDpxmVzuMmWR9sn+eG5DENTdh1O1K/nmHX10VM1GOe9NWg+XaarSVa9ZQe8Gxcj1fXixKLe8jTdJWeZPEDrr1qY7Gy5aJwqu4RAdYfYqNu49N+7NOi+zytNAjdJpG3Dt0D3z9gKaZGPqa9M/9pvcz/Dw9x+fvV9+DWYsSPef7TgDJvhf8nQD098L7nQibS8AmRMYo/fpDd4oe5+P+wu8MUnN6/JvcHsyBT6ySbjenzlfL+63+mQQEDc0xk3VWjSIvIy4fpTgG6QwMpiLm+VxP0MZVk0ARcfAY0AFkX157LDw8OInJzsjqZh4gAMiqo2pdDxcQrzWg15tRO0quc2W57nfb/WH5HjTsIGyeuRP0hsLg78tBL0hw/vmz9orGOfOr9STP2rO7yi7Tc4ynyQ3L1w1MTzlXAuCqP/IGXF/3/byI5Xpa9/oGbFxkjNLPGULKnYKLnI4H6NQ/VrqTTyuJxvnLtJui7E1qSTi3OhovGyM/vK4v+zlxGHE/PC4gYrfL1e88K+MDjtPv52F4VC0Rt9ZEX3yvQ/8t3ESc8tkG/EN2aZdb4dArrBkjp5qi9ygAzaylbrOWkyVgzBt0UAoBARsGmaP0yb2z6HDZAHq85SjFWnEzzPihWPTlN4mCcX3Tk387OhoPu5e4ZsgfvXK3cn1tn5I7oYGUYRzvDAUUm/qIdeS6JrzgzlW08bnZSJ24JSE3GffMB+Ctb1CnJef7wg1efOmbHNgGnAAr1wo0yUaz8HB9Pz2foWA9bU6LD5bXdR+XbFNmuMypvnVg+XZy22YmkS/JFkgmX9U8B2FTDEiOjFT6SZUX/yAtFUqZLg7tLikcZItSqR0un+nrmQokbyDibepCm5D7Y/d1y4rLz04kK0cRJZJVk3MC2Fiy4vaVgJdWgjfR6j20K63TZDrhcCMZys5y3S5BsQZkAjImZXPecWLd977Xn66IVcRPzj5WUpgNA7T1mTtNMmkmny/KY7c9xVW0+ECdC3/8R0Ky9tBph0TjHFLmLvc6qJLS8OtI0c8/Y2s1pexRyjxZkV5JZm2jeWcsu2d8PvkVenPxuqUo/VJVgjrvnfMiKXpfoRYAzKbgKa/JYJnD6wEAk38m9QG+NTn76o/UnEcPorgAU2OwoqdqY0BXHPv6KvD3EHDWxyNDl9tfcUfRaTLONcjvwfOD3zzg66BdWfrNe20XPe6yZCp4LLmTJkgp/F+v+Z6awv765yaMj8Znzt49Gqv0QEBZ4MyEyUVPSTt88Y+V7xPw3+uy/YmwLWG8Ic7K9cnHJxsgRj4e2QBaPkFJBQRseGSke2f6j8TaGvSg9sPOOVT8tL3fEWt24Rixjrp/rF1CzfliCeZ/RbzwMT121SmiF/mG2YXiWrnMD0OEbWtGyPyiLzU5ly0kgq8cCrbGWHg5g3XlrHyQ3ENzj67qqaxF4qtOdG+Avr8E9wbo+0tyb0DYHAICvg4yxr3DKP2C3BdO8/K+j8jfM86SzaH8T+lT+ABg7nkS/B10IQV5WdE7FMGLjqBg8kPp3U2+6lMAACnWQmKiVC0E4c+zVzz32w1Vcyr+LNcz8Uid+hd9/DDtqulMSl/dwwJ/kJldXI8eMiYa7/uMVK2+MsZpaM+nH+defcjeSlJS3WIveUIH531B5oCALRntytL3NeF2/cxmGfm9OSDIwcB8TY/L2TfsN1eZFfk6D9ztfxvNocbb7mtqDpJy/jmHysY1aKBYv7lXaP9v1lfiXuH7vvjtF6Lx9Vvvpuao4C8FYtml08bPTBsU1xDc+oZUyp74m4vVnO6PpE+5jGuYzuuVaK0AvV5J1gpQ65VkrdzXJVkrQK+XWivudezpgwAAa7eWGJKigHbrG5aQAUHvt/BIMj4e/IynKNkvOkxe51u3gMxAxrh37B7bRo/nziGeGMdaTKQYHavQdJcfWGOvkmic/dnUtO+bFHHEbkpJFlNgzlkTX14730PTKB1cZNK2xm2HROM4udV6+Of5HlzOoqAwAgI2P2SM0ldpiAzXaqcKSQ5cZj0gPufm7zvvQa4bLoZKqui/ukastZG/FoVZV6Erf/M+lGCpL6899uTC91qnKREUkty302ZSbTbs1qL3WnyATovk3HjbnbJdqPI4bAwBAZsWmePT9+SbzzxJK9YB90kKXeU14s8ecZIEaBvLtZ87q1ZcBllr0it6l6RtbX9RziOpV+z0c8Xq/vKcv6g5RwzbMxqr/gAUBFVKHtAFTIoqWq55zVZaBoUzxRXQdASlSNLp4MzX31Zz7t1fqAZ8mUXdxlbra6NN0ayijYJcGzkxtBLVj8pmV1ooLp2m8x1XDfXVZcz+iZyCSqbolNolW0uQmdeB18B1cbmNWCLwGuRpNx9vkLwOvAYqTRXQ6/Dxp9FYrUGoIQjYCGhXlr7PT+xWfPq4P+LAyqN2W9lQzhj9bjT+x5dj1JzmJsk2GXauBDTjTgdLDpasmm7j06dZVu9drv4+++ono/HYHSVgy0pg+kPbqjm+6x76M/FHs48XAJZuK37rEX+oisYqd7yfzmv3FVepFNYGrUg5EMv36rtPICi8gICvg8x378SAFVuP5+UEENdlSSltX0qiC0+zljafs0ayhKZ+X9whQ37nD6yN+VTej9vsKVdPrj60NXWRU9GsQyReMPBuf5NzH3wyBKDlwwVh/L1yyLkauVNUrjyX8z/ZOIOSDwhYf2SOe4dBimThYeXqqZ5vSIohK6nKKyUgWXGZDkhyEHP+2UK+Vn6NKHrOY28DrlqlzJM2LfvoWD/kd8S4GeMO+ddr5dF4eI2kQtpekmdvpuim4HYKNT6Z4+np6qSgLtxfrHhOQWUZcstJAOj1dPpNJE7WzUNl855zvpzKyq8R4rycOFn7NmJnc2GKCN6I466tboykhua/R0yWXA3rpOGGDSqgPaH9WvoxDUQS0csytSyc3G8P2+T8Y7XCO+G8F6PxK+dIZapqoh2TO84UAIV3yuevPVQXQNnB1NTbU0AVC7pXs1I2JJcigmkqOObBGUyxHD9MdeChGQCg5UtNZuYfIUFili3gyHeeXPfR4z6Mxk+csp+aw5W/Phm6JyTbmVyIfN20jm48KE4+AQHfBjLT0idFX7OLkxb5PvHes4LhzcFRRHGdnqK3csgzX/vhLtE4ZzHld4+hFMf3NAf/xD/LiWLQg8TVfzzlmzuWPlcLb/W8bCifH0YZP84GMP90iVH0/odY7Y2cMdRH++fnfbdcrnuWWNB8NZw2CwCzdxE3Uu93ifMoW5RkTgxfe812oug7zpPPfOPAwWrO0iPlc7rXidX+1MHbR+OsBp2LX+mRdT7Vmq3aVsug44dyYqr+h9QNLPpMqoqH3VKl5rDJoYLzdNJwN9iwOQR8W2hXlr4K5Hby57UvvFuO4t2uEb+3os11XBuzvis//j5vUP78AvqxurIil4EqOFpO1nwnJ6jLJGe0Iakio5hAcO1osdrz3xX3QxsLnCp3+XThbbcI6KwUX2MQljugZJJI7oCSPcu93x2hYCggYENgowVyjTFVAGoANAFotNbuaIzpCuARAOUAqgAcb61dnnr95QDOTL3+Qmvt+DRvq8BKf+5lUlzV/3aiPeimKxe9XahY0Tfr+149Wo7sHSZo/3gruCE3AORO9ZC+xQR/mz1+eFZyfJ8AMOB+8puzOyKHxutxP21AefvNJWLlBoK0gID2hY3t3tnXWsvn6ssAvGytvc4Yc1nq70uNMSMBnAhgFIAyAC8ZY4ZZa2NSYjRqt5J8aKXMnSIlVXpOzVbyVskRv+T1KjWHFeOKPcqjced35PHsVU4xlM91FIO1feTaOqwR90wO8Qf1fy4miMnl/Mxt73S66jAlve+/YUfhHMqb7dA+U755FhdnEVWBQx+nNoHFP5bNqvezMRsN3wPLkDadNcP0Rr54K/mq8vdg2O+I999JH0209k7wlzflrAW0DjHZSLyxcxc3XgOXH+q6d5+KxpftejTSwv0cWuPEa8pNWYhiImzeWy42hKW/Iyt9Y8wkAPtYa+cbY3oDeM1aOzxl5cNae23qdeMBXG2tfTfNW0fwBXJX7yg/rqJXv1JzfH1xVYGNy4XCcqBUSEVV4LhDVu0vHPZNBfJcyZui8Fz+++ojpUNXl9eq5HXsQnHcO1zV21AsarfDK3LfsQFWT9Cbm5kAWmlyqmn2Kmru7igis1iUzIKjRcn2ekpOJ249QJu0zxQ4NsPyBPwy9ckT8MvUJ08gXqYBAe0FG9PStwBeMMZYAH+z1t4FoKe1dj4ApBR/awSsD4D3aO6c1GNtYIw5B8A5AFCAonQvwfxTxOoe8pFWktV7yIZwwTVjo/ED24uSbuM3Z2VGJweVqlesuzmpgHFClPyHUi7p8QU/pMDrE1opNl8hFlrRpdQ4m5g1OccdABrnS8B31QlSnMXy+NXzx6s5w34lVaM5i8XqXniAuLVU20IHvZ4TxVx5tazBiGuSyYnl6QamfaZJbdcszzNA7ZNyWsgnuWU1iiHQ4ZVJak5Q9AGZjm+q9He31s5LKfYXjTETY15r0jyW9rec2jzuAlos/ehxskzLHvAXJnWaKj/cf+69s1xAL9lArDPH27aP6RGc3resmCbfKQp4+MXi67fDdGYRt+1jV4I9WFwBK+c72UjHcC45zd9leDRefvRWak7XV6qicckbMmZ5DM91qpV5IyT3jiJ5cwK59UNlQ6i7Uqz+0keoWYuT1646UlHwuK5viTz8oV8Z8ymm53v+1pQFF8p3xFSL3HibqN9eV/56m/OQ68ltVO9be65KVu0aodd+wW9kE+p4nxgZLrkdo57WfnVvkWFsM52YNGcFT6OdsCFmBjZY9o4x5moAqwCcjY3l3nmN0utOkh/KkoN0w5BuL9AX/yH6idOcNpkrPp8tuYe4UxUAdHnq82jctJWkGNZ3FWVT+Lp2PfmUl/c6EeP68bmhEJ/dFCGuDy3JoLG/VNDyvQH6/oJSCAjYPLBR3DvGmA4Asqy1NanxQQB+C+AZAD8EcF3q/6dTU54B8KAx5ma0BHKHAvjga30oKcO9XpRK19eP077pbk+IlbrkWLLQSHk2j9QKfM7+oiR7fCwWfeHnYg0ffdlLas6jJ0qOeGmRKN2ikyle4HC853j6ruI0iTfUO0HM3AmTozG7bXjT2Ps9zfH+2sniXjHTxO3C9833DDj3TdTKOYvIh/4r/ZUp+lg2oRy+Vyq6CjnqAQGbD9bb0jfGDALQypCVA+BBa+3vjTGlAMYC6A9gFoDjrLXLUnOuBHAGgEYAP7XWjlvX5ySpyF21U381p+MH4hteth/1kX2FTgCulbuWgpXk0pn5QwlCDnhAH51V/ntPsYabSkURrhiqYwddnqbTgc/qd4Klc79XHo37jCWfOt8DXz+AmaeIi8i97ggOtTJ3yOKTgu8+Af+9+u4zICBg4yNjCNdqvr9r9HjniWJ9rumrFThXVSaFqshdSj5oks8d7z+m5py3qwRCOaNk+VHiX+/6gS5MUq0HPbKPo/vlat+OL4rPN2mtAheRNXTTG9KaXuIb7vycBJxZafMaAP51SLoGHKdRcRUn5qIK4dgNFfP9NZ5TlU+GgJajT4Zx3wPlDmSDw/ke8Ca9bG8xWsJmGbAhkDFKX1nDnckSnaODb74f7pxzJUOm30Pa+l19v/iqO5wqP8hYfptB1FCEmoY0UHCwTWDQw8bJJ5fjXvlYTXn0COGdUdZ4X6q6dWSg2iVyHIDXu7N279T2lc2m4Etxa805UU47fR/W2TtcsMbFag2DZa1ypy1Qc/gko4rVqAjMhfdURPfQWKIzvRRzKrmeeIOu27VCzVm8tWx8/B3xfT8AJ2fes/Z8nwCQtZQ2uPA9WK/vQYAfGaP04/quKniyFBRF8FuOBT7X+UKmMOdHtFE8Ols/2SgWuC2R65n4C1EwI67UGTK+5iQb8t4AfX++e3M/p/L3QvFQcSExTMb0el18KPUHGCtWKl/nikd78BSUnENFblxJzNXLTjc03rzDDz8gIB4ZQ7g25f/EbcKkV4q5EtCNPoj4q/sHVKXqUYQAMPXX8jlDb/Hnpau2hjMlx33ElWLFxZ0UVItEajU4hXj2AeCu4++Mxr4+vzl1DtMo3R/75+fdKVZc2bnVag5vUEuPERksGyWfM/S2KjWHFX1zhWwA2XMlrTHnDt18HA3p8/aXHkjukCc+V8+xole9khfL441dtZtvxVCx/N33awWvNQAMvcXT/pFTd1fryuwhj4llO/VISsONWXvlcqPP4R4LvO6Af+2XH0UFak/p+0y69oylB8g6+NbeLTr0rf2qncmV9kH6dQfi154RNvxvjnZl6atjPVXXtqEIZgvWQ2rmpmzysZyzZdR7OcdgZpJs0+IwzecDaEOXEL2Xp78sAEWNPPsQUSr9/yUb0szTtaU/4B/p+Xrm3CobVd/z/HQPrLAm/V6USsV1Vd7XKfrhbSSFNeeTqTzF66pZfIj88Lu/qxkzE8maK64BnR3F7kB6L3d9kshXyRbYaPJNTJ1NaNx2iPqbZR8U5paDjHHvzLtYLB1mZHQVOPtvm0vFulE86o6CWLGTFAd3frsqGk/7sfzYB/9V/9jnnEA+zkc8JwKHzZP5T8775H/R+M5DDpYXrdZ8+uxCUY3IOX/fCeQuOFTup9fTFL/g9WZiOAC2M1nKdHJhZcFrAPjXwbcGgH8dePPm4iMAyP9KeuR2fFRcTDWHiH/9/z5/Xc0597YLonHfh2R9Eq0bgKm3CBXFkCvpNBmzPnzyUZlOzGUEeBvcfxtrGpB5yBilz35vVgqsEFys3Uqs5MIvqDH6AO1nzplLxU3kt+aetov30RW5I66WY6yPo6fOUV55S0VhrOkv1icffdfHwluz70j1d4eP0/cG5tNOLF8PW8AdKUC60n9tLOuCd6mi1v2OeeISXOCm1gNItCa8HoB/TRQ307+caztLNunacrH6ed0UERuAed+TTaTsMdpE+D4dCg92v3G3LkPyyHs/UEQErB8yRukrpeTLggFwyMuV0fi/B46SJ+hH2Kbl3dZyLObOTE3dREGwrxLwB2WVz3mOU5gU835fF+o+9x/hfR2fVgb9MXDWBwRkOjJS6S88UhRZz/84R3Qfx0iHovSvAWCpgtTLw+OguQfR8LLLglw6q0fpEwUzgirfNnWxau5RouYoy5LcAo295HVLt9aWpJJJEnk4r2N5LNtR3AylL1epKVzfsGaAnFx89xkQELDxkTHZO4w2ip5gKWjHCtwWicKc6mTIDP2zvN/Ey8ujccW1Vd7PyapZk/4JKrzp8JnOm/ZtsZyBNPPMcvVc/vKSaMytD3PIF9yz2uloRai8XDIo+o+XQHLRaw4lNQWteUssfYlk2F3LbeUw8dd3+q8UdE39laS6smwBLd/hV6QvAgsICNg4aF+WfgUxInJmhhO8qhklKYILxshzzX0lmDb4r/q+VTNzBlMdcCWoC09DFTedVFn3Ce9Hua/q66Ph3OPEt93nOX39jT3EjZTo3gB1f/OPIW78B4JLKCCgPSFj3Du1R0kj8tmHyGuG360VkZnsyQfmYB4XHAFK6TJdMFdV1o3U9P/TvysHpUGUUVL1HanqzF2p3UgDb/gMacHFTIeNUk/l1Moa+QK+7v0wJa7KArHUfanYce9USaCblbtP7oCWfRK5t7lWj9xdTDtRZMr8/LwmbkC/8g8SWB5xhQS2m/pIVs20X+gNtmmpnAazGmQjH/br9IVnALDoJMn177CQGsrHBOfnnyYnoRXDZU0qLg8nn4BvjoxR+tzsO2l7Qi40WbS/WMkdvtQVn8Vz5IenOlpRuqHi5HHBKaCkyLhLEwDkLqOWj8R+6QsEA0BDsbz3ktEyHnmU1BNMfmSYmtN1otxrwRei8Fj5LDtGFyaVvuQhZiMlV/mHMvUUyzGJDIEYOXpkCGg5JpFhQMCWjIxR+tP+JGRfQ+8TxVHfXVuspknuKX9i+nTOq995Vv+92xHyhyeH2i3O4vRFxURJVZC1zumgYIaTitgKzuN2CoZ8aZY+eQBaJknkAWiZJJIHoGWSQB4AsGI3iTF0fpeI2bhRyXxNFR0UekBAcmSM0vdRKzf11WX+2StIga6mMZXSTztPV7CWvSWWMefzx50olHuFFf0oUfSmUc/3Kd2m/pLlk/WlDnx6ycb4Nf005bGSQUxuvQ+1o8U1wvfgXj/LkWVY8A41UXPcIZN+J+6r4VcGd0ZAwIZGZip9QpsG3yvEyuRMHsyWikTjNDdRyt3XRStXV/HajpKaqVwW7omA5+RSauiSank8ji7Yl3JJ9AxmpRNkdtwjEZiWopND7JZD9zqDfOBxmw5z8lPWEp9w+KQBALkrqQcxMSrGdvvyrAOvgc3TyWhZa2QTSiR393MTyB1wZE9yV9/LHH1688k3IGBDIGNSNlfvKLzjNX3l0ns95aRvUlaKIbeJZSI2Jxf/Xx8+GY1PrjhQ5rMiclwbpoEUK+e4E72tu7mkaxQMAIaumUmqAKDDy8L5rhQwKS83dqAscs7SoeyfNtdA7/eviS9G41N2J754pxDO55YqoKCqm8GkZELjumEUQI/pkZsU6VmONgA+j2sFTZjvJ/ULCPi20K6Ufl1nsdZ6jfP7plVqJRVKqaIrxxo/6dhzonF2J+HHUb7pPtrKtWx98imCSdo8BGstL5QtoHpPUfTcyBwAmoeXy7WRZcwc5PnTtA9cWam88VF8wBjH+iSZsKJnTpw21A3ltEG5/v7Wz+nhsGxyly/6zJzVsiG5cQDOseF18K0BsA6K6uhFzjbMdAnkFmsuk3tw+d7VtVJRG1NvtykG5HXg7KoCyVJCjT6FqDm8cYZYSMDXQLtS+l2eFv/vmj2Er6SoUnPjLziEiankFKDS5pwUOqX+KKVQNd9wjuiK7ZFe9/M3XojGd87fV82Z8D/hl+H0vJI3/bSzWfNoE+LPnzIr7eOAnwNfM5A6Co/cYjPOFl/9wHtEeakev/Dz3GcXiyJcu20/NYfXa8E+EovwrpUDRRvN9+m67HjDZaVLFB4/f0V37OT18q2VuyEp1w93+ErKodRMm8OKGv/r6B6aqRKaiwTdjW72zyU1dOA9VfJEwlqSgMxDu/Lprz1G8sVVq0DXoiPrfpsnJA3x00Mp5dNp0uGzUlfvIC6lWQdrpT/ij0KBPOmXoth22FHobFdeoGkYWFHP+CX9IB+j1nwudbBvjYhGQbVhRIwf3iMbwJEPIy57h1B5RXk09skG8MuHZdOmjsJ1K7WCWUzdrKcCisF4ahACAjIRGRPIVd2lyGVg8/PUnBknynMlk+X+un4kBGeNXXQ16vKRokDrSsSi6nOXFFO5/nl13Gbrj47bq0bprBrVSIIst5mnST1B/1t1AZe3wxa3hSzUm5hXBtwc3qF9Vl2s2E3BVMIOXw/fH8ce4rptVe9VHo19vXgDAgLWHxkTyGV+8rVDRKkVfq5phAfdKcqYLXX20S44TFvgbs/PVjQPE5+1Weg0a/H04m2aJ4Hcjs6munZrsXoLPxNruMcECQq7Vm4OnWQ4mL18iCyfe/0sg+bedJ3MDLoBAo0FU+Vzm/iJGAXe8RH53CbvqwICAjYGNrnSN8YcAuDPaInN/d1ae13iyRSQLJxCtMQxp5UOH89O+/iq7XVzazyRvho0az4VU+U64iJXB7uYWEm7zTNY0VedKX7z8ntIaTuup/rhskF1+J+4KTp85FeZvsBjbPolW/5rHflEb+bEAUj2E6+X7KiKX9H6+NJHgViKbC88qZTccg/QbffCKSIgoAWbVOkbY7IB/AXAgQDmAPjQGPOMtfar+JkpsM/WkwECQGc9UDCP86YrLtGZHqrZCp8ciPyM+WwAJ5bAJGmkPOffrHP7e58j78GKvvJqseCH3a03irxJcq0NQ8TvnjtXTh5r/6Y3voJjqqKxj8K5TWYR0yDU1ad9nXVkzRlRA/5J6xNDIMe9DJLIENByZBkySr5yOJi4D+121A4zRm6Fp8vGM/0sOeUNvJHcfE4MiXP9+78sG/FLb20TjYff4KG4AHS6LwVVw0YVsDGwSX36xphdAVxtrT049fflAGCtvdY3J0lFrioQApQP2qfMZ5ylK3KbSd8Nut7zA3etXA+zZmyaZoKevaasJxS4opYVY5Pf0p/8M7F6h/5TlBzn4s8+Wcug753p2TQV55EbLGUF7imuim0QTnNUemxc/ISf8xXVuUjYK1nJ/pvK/bfhpBHw7WCzCeQaY74H4BBr7Vmpv38AYBdr7fnO684B0Jo4PxrAF9iy0Q3AknW+KrMRZBBkAAQZAMlksAQArLWHuE9sap9+uoLUNruOtfYuAHcBgDHmo3S71ZaEIIMgAyDIAAgyAL65DLLW/ZINijkAOGm7L4B5ntcGBAQEBGxgbGql/yGAocaYgcaYPAAnAnhmE19DQEBAwBaLTeresdY2GmPOBzAeLSmb91prv1zHtLs2/pVt9ggyCDIAggyAIAPgG8pgs6/IDQgICAjYcNjU7p2AgICAgG8RQekHBAQEbEHYbJW+MeYQY8wkY8xUY8xl3/b1bAoYY/oZY141xlQaY740xlyUeryrMeZFY8yU1P9d1vVe7R3GmGxjzP+MMc+m/t6iZGCMKTHGPGaMmZj6Puy6BcrgZ6nfwRfGmIeMMQWZLgNjzL3GmEXGmC/oMe89G2MuT+nIScaYg5N8xmap9Imu4VAAIwGcZIwZ+e1e1SZBI4BfWGtHABgD4Cep+74MwMvW2qEAXk79nem4CEAl/b2lyeDPAP5rra0AsA1aZLHFyMAY0wfAhQB2tNaORkvix4nIfBncB8AtqEp7zyndcCKAUak5f03pzlhslkofwM4Aplprp1tr6wE8DOCob/maNjqstfOttR+nxjVo+aH3Qcu935962f0Ajv5WLnATwRjTF8DhAP5OD28xMjDGdAKwF4B7AMBaW2+trcYWJIMUcgAUGmNyABShpaYno2VgrX0DwDLnYd89HwXgYWttnbV2BoCpaNGdsdhclX4fAEyPOSf12BYDY0w5gO0AvA+gp7V2PtCyMQDoETM1E3ALgEug29xuSTIYBGAxgH+kXFx/N8Z0wBYkA2vtXAA3ApgFYD6AFdbaF7AFyYDgu+f10pObq9JPRNeQqTDGdATwOICfWmtXruv1mQRjzBEAFllrJ3zb1/ItIgfA9gDusNZuB2A1Ms+NEYuU3/ooAAMBlAHoYIw55du9qs0O66UnN1elv8XSNRhjctGi8P9trX0i9fBCY0zv1PO9ASzyzc8A7A7gO8aYKrS49fYzxvwLW5YM5gCYY619P/X3Y2jZBLYkGRwAYIa1drG1tgHAEwB2w5Ylg1b47nm99OTmqvS3SLoGY4xBix+30lp7Mz31DIAfpsY/BPD0pr62TQVr7eXW2r7W2nK0rPsr1tpTsGXJYAGA2caY4amH9gfwFbYgGaDFrTPGGFOU+l3sj5YY15Ykg1b47vkZACcaY/KNMQMBDAXwwTrfzVq7Wf4DcBiAyQCmAbjy276eTXTPe6DlePYZgE9S/w4DUIqWqP2U1P9dv+1r3UTy2AfAs6nxFiUDANsC+Cj1XXgKQJctUAa/ATARLdTq/wSQn+kyAPAQWmIYDWix5M+Mu2cAV6Z05CQAhyb5jEDDEBAQELAFYXN17wQEBAQEbAQEpR8QEBCwBSEo/YCAgIAtCEHpBwQEBGxBCEo/ICAgYAtCUPoBAQEBWxCC0g8ICAjYgvD/ip444Lf20v0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cls = [tokenizer.convert_tokens_to_ids(['[CLS]'])]*sentence1.shape[0]\n",
    "input_word_ids = tf.concat([cls, sentence1, sentence2], axis=-1)\n",
    "_ = plt.pcolormesh(input_word_ids.to_tensor())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xmNv4l4k-dBZ"
   },
   "source": [
    "#### Mask and input type"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "DIWjNIKq-ldh"
   },
   "source": [
    "The model expects two additional inputs:\n",
    "\n",
    "* The input mask\n",
    "* The input type"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ulNZ4U96-8JZ"
   },
   "source": [
    "The mask allows the model to cleanly differentiate between the content and the padding. The mask has the same shape as the `input_word_ids`, and contains a `1` anywhere the `input_word_ids` is not padding."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 283
    },
    "id": "EezOO9qj91kP",
    "outputId": "d7f1a486-beab-4f89-a0ae-78d2389b7828"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.QuadMesh at 0x7f026424fb90>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "input_mask = tf.ones_like(input_word_ids).to_tensor()\n",
    "\n",
    "plt.pcolormesh(input_mask)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "rxLenwAvCkBf"
   },
   "source": [
    "The \"input type\" also has the same shape, but inside the non-padded region, contains a `0` or a `1` indicating which sentence the token is a part of. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 283
    },
    "id": "2CetH_5C9P2m",
    "outputId": "449fad96-f508-454e-9d92-a7bdfada66d8"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.QuadMesh at 0x7f02640beed0>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "type_cls = tf.zeros_like(cls)\n",
    "type_s1 = tf.zeros_like(sentence1)\n",
    "type_s2 = tf.ones_like(sentence2)\n",
    "input_type_ids = tf.concat([type_cls, type_s1, type_s2], axis=-1).to_tensor()\n",
    "\n",
    "plt.pcolormesh(input_type_ids)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "P5UBnCn8Ii6s"
   },
   "source": [
    "#### Put it all together\n",
    "\n",
    "Collect the above text parsing code into a single function, and apply it to each split of the `glue/mrpc` dataset."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "id": "sDGiWYPLEd5a"
   },
   "outputs": [],
   "source": [
    "def encode_sentence(s, tokenizer):\n",
    "   tokens = list(tokenizer.tokenize(s))\n",
    "   tokens.append('[SEP]')\n",
    "   return tokenizer.convert_tokens_to_ids(tokens)\n",
    "\n",
    "def bert_encode(glue_dict, tokenizer):\n",
    "  num_examples = len(glue_dict[\"sentence1\"])\n",
    "  \n",
    "  sentence1 = tf.ragged.constant([\n",
    "      encode_sentence(s, tokenizer)\n",
    "      for s in np.array(glue_dict[\"sentence1\"])])\n",
    "  sentence2 = tf.ragged.constant([\n",
    "      encode_sentence(s, tokenizer)\n",
    "       for s in np.array(glue_dict[\"sentence2\"])])\n",
    "\n",
    "  cls = [tokenizer.convert_tokens_to_ids(['[CLS]'])]*sentence1.shape[0]\n",
    "  input_word_ids = tf.concat([cls, sentence1, sentence2], axis=-1)\n",
    "\n",
    "  input_mask = tf.ones_like(input_word_ids).to_tensor()\n",
    "\n",
    "  type_cls = tf.zeros_like(cls)\n",
    "  type_s1 = tf.zeros_like(sentence1)\n",
    "  type_s2 = tf.ones_like(sentence2)\n",
    "  input_type_ids = tf.concat(\n",
    "      [type_cls, type_s1, type_s2], axis=-1).to_tensor()\n",
    "\n",
    "  inputs = {\n",
    "      'input_word_ids': input_word_ids.to_tensor(),\n",
    "      'input_mask': input_mask,\n",
    "      'input_type_ids': input_type_ids}\n",
    "\n",
    "  return inputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "id": "yuLKxf6zHxw-"
   },
   "outputs": [],
   "source": [
    "glue_train = bert_encode(glue['train'], tokenizer)\n",
    "glue_train_labels = glue['train']['label']\n",
    "\n",
    "glue_validation = bert_encode(glue['validation'], tokenizer)\n",
    "glue_validation_labels = glue['validation']['label']\n",
    "\n",
    "glue_test = bert_encode(glue['test'], tokenizer)\n",
    "glue_test_labels  = glue['test']['label']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "7FC5aLVxKVKK"
   },
   "source": [
    "Each subset of the data has been converted to a dictionary of features, and a set of labels. Each feature in the input dictionary has the same shape, and the number of labels should match:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "jyjTdGpFhO_1",
    "outputId": "e28793da-0963-4e90-acc8-828b6f528161"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "input_word_ids  shape: (3668, 103)\n",
      "input_mask      shape: (3668, 103)\n",
      "input_type_ids  shape: (3668, 103)\n",
      "glue_train_labels shape: (3668,)\n"
     ]
    }
   ],
   "source": [
    "# TODO 2\n",
    "# Print the key value and shapes\n",
    "for key, value in glue_train.items():\n",
    "  print(f'{key:15s} shape: {value.shape}')\n",
    "\n",
    "print(f'glue_train_labels shape: {glue_train_labels.shape}')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "FSwymsbkbLDA"
   },
   "source": [
    "## The model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Efrj3Cn1kLAp"
   },
   "source": [
    "### Build the model\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xxpOY5r2Ayq6"
   },
   "source": [
    "The first step is to download the configuration  for the pre-trained model.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "ujapVfZ_AKW7",
    "outputId": "e42b52f0-2c85-4976-c683-754bba41e609"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'attention_probs_dropout_prob': 0.1,\n",
       " 'hidden_act': 'gelu',\n",
       " 'hidden_dropout_prob': 0.1,\n",
       " 'hidden_size': 768,\n",
       " 'initializer_range': 0.02,\n",
       " 'intermediate_size': 3072,\n",
       " 'max_position_embeddings': 512,\n",
       " 'num_attention_heads': 12,\n",
       " 'num_hidden_layers': 12,\n",
       " 'type_vocab_size': 2,\n",
       " 'vocab_size': 30522}"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import json\n",
    "\n",
    "bert_config_file = os.path.join(gs_folder_bert, \"bert_config.json\")\n",
    "config_dict = json.loads(tf.io.gfile.GFile(bert_config_file).read())\n",
    "\n",
    "bert_config = bert.configs.BertConfig.from_dict(config_dict)\n",
    "\n",
    "config_dict"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "96ldxDSwkVkj"
   },
   "source": [
    "The `config` defines the core BERT Model, which is a Keras model to predict the outputs of `num_classes` from the inputs with maximum sequence length `max_seq_length`.\n",
    "\n",
    "This function returns both the encoder and the classifier."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "id": "cH682__U0FBv"
   },
   "outputs": [],
   "source": [
    "bert_classifier, bert_encoder = bert.bert_models.classifier_model(\n",
    "    bert_config, num_labels=2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "XqKp3-5GIZlw"
   },
   "source": [
    "The classifier has three inputs and one output:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 220
    },
    "id": "bAQblMIjwkvx",
    "outputId": "c6b4bc9e-b52e-498b-891c-989bd48263ae"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.keras.utils.plot_model(bert_classifier, show_shapes=True, dpi=48)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "sFmVG4SKZAw8"
   },
   "source": [
    "Run it on a test batch of data 10 examples from the training set. The output is the logits for the two classes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "VTjgPbp4ZDKo",
    "outputId": "cfcac2af-7262-443d-cbb9-237704773d6e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.04277898, -0.20988145],\n",
       "       [-0.08687247, -0.19173123],\n",
       "       [-0.0663235 , -0.26857114],\n",
       "       [ 0.04105908, -0.3004415 ],\n",
       "       [ 0.03220559, -0.21416324],\n",
       "       [ 0.0967199 , -0.17884508],\n",
       "       [ 0.18704112, -0.1567168 ],\n",
       "       [-0.04636147, -0.24098182],\n",
       "       [-0.00793586, -0.13589038],\n",
       "       [ 0.05198733, -0.16694066]], dtype=float32)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "glue_batch = {key: val[:10] for key, val in glue_train.items()}\n",
    "\n",
    "bert_classifier(\n",
    "    glue_batch, training=True\n",
    ").numpy()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Q0NTdwZsQK8n"
   },
   "source": [
    "The `TransformerEncoder` in the center of the classifier above **is** the `bert_encoder`.\n",
    "\n",
    "Inspecting the encoder, we see its stack of `Transformer` layers connected to those same three inputs:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 1000
    },
    "id": "8L__-erBwLIQ",
    "outputId": "7ee5d535-aa51-47e6-c3fd-96c46ea0b2ff"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.keras.utils.plot_model(bert_encoder, show_shapes=True, dpi=48)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "mKAvkQc3heSy"
   },
   "source": [
    "### Restore the encoder weights\n",
    "\n",
    "When built the encoder is randomly initialized. Restore the encoder's weights from the checkpoint:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "97Ll2Gichd_Y",
    "outputId": "51c78d12-8ca4-4f9f-b64c-052feafa950e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.training.tracking.util.CheckpointLoadStatus at 0x7f0282859490>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "checkpoint = tf.train.Checkpoint(encoder=bert_encoder)\n",
    "checkpoint.read(\n",
    "    os.path.join(gs_folder_bert, 'bert_model.ckpt')).assert_consumed()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "2oHOql35k3Dd"
   },
   "source": [
    "Note: The pretrained `TransformerEncoder` is also available on [TensorFlow Hub](https://tensorflow.org/hub). See the [Hub appendix](#hub_bert) for details. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "115caFLMk-_l"
   },
   "source": [
    "### Set up the optimizer\n",
    "\n",
    "BERT adopts the Adam optimizer with weight decay (aka \"[AdamW](https://arxiv.org/abs/1711.05101)\").\n",
    "It also employs a learning rate schedule that firstly warms up from 0 and then decays to 0."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "id": "w8qXKRZuCwW4"
   },
   "outputs": [],
   "source": [
    "# TODO 3\n",
    "# Set up epochs and steps\n",
    "epochs = 3\n",
    "batch_size = 32\n",
    "eval_batch_size = 32\n",
    "\n",
    "train_data_size = len(glue_train_labels)\n",
    "steps_per_epoch = int(train_data_size / batch_size)\n",
    "num_train_steps = steps_per_epoch * epochs\n",
    "warmup_steps = int(epochs * train_data_size * 0.1 / batch_size)\n",
    "\n",
    "# creates an optimizer with learning rate schedule\n",
    "optimizer = nlp.optimization.create_optimizer(\n",
    "    2e-5, num_train_steps=num_train_steps, num_warmup_steps=warmup_steps)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "pXRGxiRNEHS2"
   },
   "source": [
    "This returns an `AdamWeightDecay`  optimizer with the learning rate schedule set:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "eQNA16bhDpky",
    "outputId": "3cafda25-7174-43ba-ad81-077451edf60d"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "official.nlp.optimization.AdamWeightDecay"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(optimizer)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xqu_K71fJQB8"
   },
   "source": [
    "To see an example of how to customize the optimizer and it's schedule, see the [Optimizer schedule appendix](#optimizer_schedule)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "78FEUOOEkoP0"
   },
   "source": [
    "### Train the model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "OTNcA0O0nSq9"
   },
   "source": [
    "The metric is accuracy and we use sparse categorical cross-entropy as loss."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "nzi8hjeTQTRs",
    "outputId": "2b9a2885-0224-4c31-a273-317d65b4160b"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/3\n",
      "115/115 [==============================] - 1743s 15s/step - loss: 0.5832 - accuracy: 0.7069 - val_loss: 0.5122 - val_accuracy: 0.7696\n",
      "Epoch 2/3\n",
      "115/115 [==============================] - 1773s 15s/step - loss: 0.4140 - accuracy: 0.8242 - val_loss: 0.3938 - val_accuracy: 0.8235\n",
      "Epoch 3/3\n",
      "115/115 [==============================] - 1867s 16s/step - loss: 0.2679 - accuracy: 0.9046 - val_loss: 0.3847 - val_accuracy: 0.8407\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<keras.callbacks.History at 0x7f02821e3d50>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# TODO 4\n",
    "metrics = [tf.keras.metrics.SparseCategoricalAccuracy('accuracy', dtype=tf.float32)]\n",
    "loss = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)\n",
    "\n",
    "bert_classifier.compile(\n",
    "    optimizer=optimizer,\n",
    "    loss=loss,\n",
    "    metrics=metrics)\n",
    "\n",
    "# Train the model\n",
    "bert_classifier.fit(\n",
    "      glue_train, glue_train_labels,\n",
    "      validation_data=(glue_validation, glue_validation_labels),\n",
    "      batch_size=32,\n",
    "      epochs=epochs)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "IFtKFWbNKb0u"
   },
   "source": [
    "Now run the fine-tuned model on a custom example to see that it works.\n",
    "\n",
    "Start by encoding some sentence pairs:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "id": "9ZoUgDUNJPz3"
   },
   "outputs": [],
   "source": [
    "my_examples = bert_encode(\n",
    "    glue_dict = {\n",
    "        'sentence1':[\n",
    "            'The rain in Spain falls mainly on the plain.',\n",
    "            'Look I fine tuned BERT.'],\n",
    "        'sentence2':[\n",
    "            'It mostly rains on the flat lands of Spain.',\n",
    "            'Is it working? This does not match.']\n",
    "    },\n",
    "    tokenizer=tokenizer)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "7ynJibkBRTJF"
   },
   "source": [
    "The model should report class `1` \"match\" for the first example and class `0` \"no-match\" for the second:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "umo0ttrgRYIM",
    "outputId": "f06079d9-feca-497e-e8e4-5b3aedf8ca6b"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 0])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result = bert_classifier(my_examples, training=False)\n",
    "\n",
    "result = tf.argmax(result).numpy()\n",
    "result"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "utGl0M3aZCE4",
    "outputId": "b244720c-5ee5-47b1-a36a-de5a5eeb9ef4"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['equivalent', 'not_equivalent'], dtype='<U14')"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.array(info.features['label'].names)[result]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "fVo_AnT0l26j"
   },
   "source": [
    "### Save the model\n",
    "\n",
    "Often the goal of training a model is to _use_ it for something, so export the model and then restore it to be sure that it works."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "Nl5x6nElZqkP",
    "outputId": "673f5afa-714d-4cd1-cc4b-7f4f9340cfa7"
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2022-05-05 12:49:32.868694: W tensorflow/python/util/util.cc:368] Sets are not currently considered sequences, but this may change in the future, so consider avoiding using them.\n",
      "WARNING:absl:Found untraced functions such as self_attention_layer_call_fn, self_attention_layer_call_and_return_conditional_losses, dropout_layer_call_fn, dropout_layer_call_and_return_conditional_losses, self_attention_layer_norm_layer_call_fn while saving (showing 5 of 360). These functions will not be directly callable after loading.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Assets written to: ./saved_model/assets\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Assets written to: ./saved_model/assets\n"
     ]
    }
   ],
   "source": [
    "export_dir='./saved_model'\n",
    "tf.saved_model.save(bert_classifier, export_dir=export_dir)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "y_ACvKPsVUXC",
    "outputId": "ccb43ea9-2ba5-4769-e484-5e66ec47cf49"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[-0.86007184  1.5733043 ]\n",
      " [ 0.8937466  -0.89022815]]\n",
      "\n",
      "[[-0.86007136  1.5733039 ]\n",
      " [ 0.8937466  -0.89022744]]\n"
     ]
    }
   ],
   "source": [
    "reloaded = tf.saved_model.load(export_dir)\n",
    "reloaded_result = reloaded([my_examples['input_word_ids'],\n",
    "                            my_examples['input_mask'],\n",
    "                            my_examples['input_type_ids']], training=False)\n",
    "\n",
    "original_result = bert_classifier(my_examples, training=False)\n",
    "\n",
    "# The results are (nearly) identical:\n",
    "print(original_result.numpy())\n",
    "print()\n",
    "print(reloaded_result.numpy())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "eQceYqRFT_Eg"
   },
   "source": [
    "## Appendix"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "SaC1RlFawUpc"
   },
   "source": [
    "<a id=re_encoding_tools></a>\n",
    "### Re-encoding a large dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "CwUdjFBkzUgh"
   },
   "source": [
    "This tutorial you re-encoded the dataset in memory, for clarity.\n",
    "\n",
    "This was only possible because `glue/mrpc` is a very small dataset. To deal with larger datasets `tf_models` library includes some tools for processing and re-encoding a dataset for efficient training."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "2UTQrkyOT5wD"
   },
   "source": [
    "The first step is to describe which features of the dataset should be transformed:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "id": "XQeDFOzYR9Z9"
   },
   "outputs": [],
   "source": [
    "processor = nlp.data.classifier_data_lib.TfdsProcessor(\n",
    "    tfds_params=\"dataset=glue/mrpc,text_key=sentence1,text_b_key=sentence2\",\n",
    "    process_text_fn=bert.tokenization.convert_to_unicode)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "XrFQbfErUWxa"
   },
   "source": [
    "Then apply the transformation to generate new TFRecord files."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "id": "ymw7GOHpSHKU"
   },
   "outputs": [],
   "source": [
    "# TODO 5\n",
    "# Set up output of training and evaluation Tensorflow dataset\n",
    "train_data_output_path=\"./mrpc_train.tf_record\"\n",
    "eval_data_output_path=\"./mrpc_eval.tf_record\"\n",
    "\n",
    "max_seq_length = 128\n",
    "batch_size = 32\n",
    "eval_batch_size = 32\n",
    "\n",
    "# Generate and save training data into a tf record file\n",
    "input_meta_data = (\n",
    "    nlp.data.classifier_data_lib.generate_tf_record_from_data_file(\n",
    "      processor=processor,\n",
    "      data_dir=None,  # It is `None` because data is from tfds, not local dir.\n",
    "      tokenizer=tokenizer,\n",
    "      train_data_output_path=train_data_output_path,\n",
    "      eval_data_output_path=eval_data_output_path,\n",
    "      max_seq_length=max_seq_length))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "uX_Sp-wTUoRm"
   },
   "source": [
    "Finally create `tf.data` input pipelines from those TFRecord files:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "id": "rkHxIK57SQ_r"
   },
   "outputs": [],
   "source": [
    "training_dataset = bert.run_classifier.get_dataset_fn(\n",
    "    train_data_output_path,\n",
    "    max_seq_length,\n",
    "    batch_size,\n",
    "    is_training=True)()\n",
    "\n",
    "evaluation_dataset = bert.run_classifier.get_dataset_fn(\n",
    "    eval_data_output_path,\n",
    "    max_seq_length,\n",
    "    eval_batch_size,\n",
    "    is_training=False)()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "stbaVouogvzS"
   },
   "source": [
    "The resulting `tf.data.Datasets` return `(features, labels)` pairs, as expected by `keras.Model.fit`:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "gwhrlQl4gxVF",
    "outputId": "51720643-fb6b-4c94-bff8-39c24fb333b3"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "({'input_word_ids': TensorSpec(shape=(32, 128), dtype=tf.int32, name=None),\n",
       "  'input_mask': TensorSpec(shape=(32, 128), dtype=tf.int32, name=None),\n",
       "  'input_type_ids': TensorSpec(shape=(32, 128), dtype=tf.int32, name=None)},\n",
       " TensorSpec(shape=(32,), dtype=tf.int32, name=None))"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "training_dataset.element_spec"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "dbJ76vSJj77j"
   },
   "source": [
    "#### Create tf.data.Dataset for training and evaluation\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9J95LFRohiYw"
   },
   "source": [
    "If you need to modify the data loading here is some code to get you started:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "id": "gCvaLLAxPuMc"
   },
   "outputs": [],
   "source": [
    "def create_classifier_dataset(file_path, seq_length, batch_size, is_training):\n",
    "  \"\"\"Creates input dataset from (tf)records files for train/eval.\"\"\"\n",
    "  dataset = tf.data.TFRecordDataset(file_path)\n",
    "  if is_training:\n",
    "    dataset = dataset.shuffle(100)\n",
    "    dataset = dataset.repeat()\n",
    "\n",
    "  def decode_record(record):\n",
    "    name_to_features = {\n",
    "      'input_ids': tf.io.FixedLenFeature([seq_length], tf.int64),\n",
    "      'input_mask': tf.io.FixedLenFeature([seq_length], tf.int64),\n",
    "      'segment_ids': tf.io.FixedLenFeature([seq_length], tf.int64),\n",
    "      'label_ids': tf.io.FixedLenFeature([], tf.int64),\n",
    "    }\n",
    "    return tf.io.parse_single_example(record, name_to_features)\n",
    "\n",
    "  def _select_data_from_record(record):\n",
    "    x = {\n",
    "        'input_word_ids': record['input_ids'],\n",
    "        'input_mask': record['input_mask'],\n",
    "        'input_type_ids': record['segment_ids']\n",
    "    }\n",
    "    y = record['label_ids']\n",
    "    return (x, y)\n",
    "\n",
    "  dataset = dataset.map(decode_record,\n",
    "                        num_parallel_calls=tf.data.AUTOTUNE)\n",
    "  dataset = dataset.map(\n",
    "      _select_data_from_record,\n",
    "      num_parallel_calls=tf.data.AUTOTUNE)\n",
    "  dataset = dataset.batch(batch_size, drop_remainder=is_training)\n",
    "  dataset = dataset.prefetch(tf.data.AUTOTUNE)\n",
    "  return dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {
    "id": "rutkBadrhzdR"
   },
   "outputs": [],
   "source": [
    "# Set up batch sizes\n",
    "batch_size = 32\n",
    "eval_batch_size = 32\n",
    "\n",
    "# Return Tensorflow dataset\n",
    "training_dataset = create_classifier_dataset(\n",
    "    train_data_output_path,\n",
    "    input_meta_data['max_seq_length'],\n",
    "    batch_size,\n",
    "    is_training=True)\n",
    "\n",
    "evaluation_dataset = create_classifier_dataset(\n",
    "    eval_data_output_path,\n",
    "    input_meta_data['max_seq_length'],\n",
    "    eval_batch_size,\n",
    "    is_training=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "59TVgt4Z7fuU",
    "outputId": "107bedd6-c867-4b52-a546-128128a95122"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "({'input_word_ids': TensorSpec(shape=(32, 128), dtype=tf.int64, name=None),\n",
       "  'input_mask': TensorSpec(shape=(32, 128), dtype=tf.int64, name=None),\n",
       "  'input_type_ids': TensorSpec(shape=(32, 128), dtype=tf.int64, name=None)},\n",
       " TensorSpec(shape=(32,), dtype=tf.int64, name=None))"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "training_dataset.element_spec"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "QbklKt-w_CiI"
   },
   "source": [
    "<a id=\"hub_bert\"></a>\n",
    "\n",
    "### TFModels BERT on TFHub\n",
    "\n",
    "You can get [the BERT model](https://tfhub.dev/tensorflow/bert_en_uncased_L-12_H-768_A-12/2) off the shelf from [TFHub](https://tensorflow.org/hub). It would not be hard to add a classification head on top of this `hub.KerasLayer`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "id": "GDWrHm0BGpbX"
   },
   "outputs": [],
   "source": [
    "# Note: 350MB download.\n",
    "import tensorflow_hub as hub"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "cellView": "form",
    "id": "Y29meH0qGq_5"
   },
   "outputs": [],
   "source": [
    "hub_model_name = \"bert_en_uncased_L-12_H-768_A-12\" "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "lo6479At4sP1",
    "outputId": "5abf18ea-0fe8-4541-e5de-4e83545e06bb"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The Hub encoder has 199 trainable variables\n"
     ]
    }
   ],
   "source": [
    "hub_encoder = hub.KerasLayer(f\"https://tfhub.dev/tensorflow/{hub_model_name}/3\",\n",
    "                             trainable=True)\n",
    "\n",
    "print(f\"The Hub encoder has {len(hub_encoder.trainable_variables)} trainable variables\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "iTzF574wivQv"
   },
   "source": [
    "Test run it on a batch of data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "XEcYrCR45Uwo",
    "outputId": "135e3351-f7f7-4fcd-bd27-59f318a4cfac"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pooled output shape: (10, 768)\n",
      "Sequence output shape: (10, 103, 768)\n"
     ]
    }
   ],
   "source": [
    "result = hub_encoder(\n",
    "    inputs=dict(\n",
    "        input_word_ids=glue_train['input_word_ids'][:10],\n",
    "        input_mask=glue_train['input_mask'][:10],\n",
    "        input_type_ids=glue_train['input_type_ids'][:10],),\n",
    "    training=False,\n",
    ")\n",
    "\n",
    "print(\"Pooled output shape:\", result['pooled_output'].shape)\n",
    "print(\"Sequence output shape:\", result['sequence_output'].shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "cjojn8SmLSRI"
   },
   "source": [
    "At this point it would be simple to add a classification head yourself.\n",
    "\n",
    "The `bert_models.classifier_model` function can also build a classifier onto the encoder from TensorFlow Hub:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "id": "9nTDaApyLR70"
   },
   "outputs": [],
   "source": [
    "hub_classifier = nlp.modeling.models.BertClassifier(\n",
    "    bert_encoder,\n",
    "    num_classes=2,\n",
    "    dropout_rate=0.1,\n",
    "    initializer=tf.keras.initializers.TruncatedNormal(\n",
    "        stddev=0.02))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xMJX3wV0_v7I"
   },
   "source": [
    "The one downside to loading this model from TFHub is that the structure of internal keras layers is not restored. So it's more difficult to inspect or modify the model. The `BertEncoder` model is now a single layer:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 287
    },
    "id": "pD71dnvhM2QS",
    "outputId": "819e0373-dfc7-475a-aa62-3d87c542a958"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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EbWbTAghjJ0EERERUU80ZswYpKenQ6lUGjsVIiIiop4gj7fmERERERERERGRQbARRUREREREREREBsFGFBERERERERERGQQbUUREREREREREZBBsRBERERERERERkUGwEUVERERERERERAbBRhQRERERERERERkEG1FERERERERERGQQbEQREREREREREZFBsBFFREREREREREQGwUYUEREREREREREZBBtRRERERERERERkEGxEERERERERERGRQbARRUREREREREREBsFGFBERERERERERGQQbUUREREREREREZBBsRBERERERERERkUGwEUVERERERERERAbBRhQRERERERERERkEG1FERERERERERGQQbEQREREREREREZFBmBg7ASIiIqKeoqmpCUeOHJG2a2pqcPz4cQwcOBAAMHToUDg6OhorPSIiIqJuTyaEEMZOgoiIiKineO6551BRUQETExM0NTXhqad+u8D89u3bKCwshLu7u5EzJCIiIuq28nhrHhEREVE7zJ8/H1qtFlVVVaipqUFVVRWqqqrw7LPPsglFRERE1Ao2ooiIiIja4S9/+QssLCx09vXr1w/h4eFGyoiIiIio52AjioiIiKgdnJ2d4erqqrPP3Nwcs2bNMlJGRERERD0HG1FERERE7bR48WJYWlpK225ubnBxcTFiRkREREQ9AxtRRERERO2kUqlgamoKALC0tMTixYuNnBERERFRz8BGFBEREVE7DRgwAC+++CIAwNTUFDNmzDByRkREREQ9AxtRRERERB3w9ttvw8zMDJ6enhgwYICx0yEiIiLqEUyMnQAREfVuN27cwN27d42dBlGn8/b2hhACM2fOxNWrV42dDlGXcHZ2xtNPP23sNIiIqBeRCSGEsZMgIqLey9fXF1qtFmZmZsZOhXqgq1evwsnJCSYm3fP/zoqLizF48GA89VTnXGReW1uLX3/9FQMHDuyUePR4N2/ehLm5OaysrIydSrd2/vx5XLhwAUql0tipEBFR75HXPX+rIyKiXiUzM5N/yFCH+Pr6Qq1Wd9v3T3V1NWxtbTstnlqtRn5+PpKSkjotJjUXFRUFHx8fzJw509ipdGu+vr7GToGIiHohPiOKiIiIqIM6swlFRERE1BewEUVERERERERERAbBRhQREVEv5+3tDZlMhn379hk7FSIiIiLq49iIIiKi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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.keras.utils.plot_model(hub_classifier, show_shapes=True, dpi=64)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZxSqH0dNAgXV"
   },
   "source": [
    "<a id=\"model_builder_functions\"></a>\n",
    "\n",
    "### Low level model building\n",
    "\n",
    "If you need a more control over the construction of the model it's worth noting that the `classifier_model` function used earlier is really just a thin wrapper over the `nlp.modeling.networks.BertEncoder` and `nlp.modeling.models.BertClassifier` classes. Just remember that if you start modifying the architecture it may not be correct or possible to reload the pre-trained checkpoint so you'll need to retrain from scratch."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "0cgABEwDj06P"
   },
   "source": [
    "Build the encoder:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "5r_yqhBFSVEM",
    "outputId": "1168531e-a618-404e-d959-2118163e92ab"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'hidden_size': 768,\n",
       " 'intermediate_size': 3072,\n",
       " 'num_attention_heads': 12,\n",
       " 'type_vocab_size': 2,\n",
       " 'vocab_size': 30522,\n",
       " 'attention_dropout_rate': 0.1,\n",
       " 'activation': <function official.modeling.activations.gelu.gelu(x)>,\n",
       " 'dropout_rate': 0.1,\n",
       " 'initializer': <keras.initializers.initializers_v2.TruncatedNormal at 0x7f01ead8a190>,\n",
       " 'max_sequence_length': 512,\n",
       " 'num_layers': 12}"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bert_encoder_config = config_dict.copy()\n",
    "\n",
    "# You need to rename a few fields to make this work:\n",
    "bert_encoder_config['attention_dropout_rate'] = bert_encoder_config.pop('attention_probs_dropout_prob')\n",
    "bert_encoder_config['activation'] = tf_utils.get_activation(bert_encoder_config.pop('hidden_act'))\n",
    "bert_encoder_config['dropout_rate'] = bert_encoder_config.pop('hidden_dropout_prob')\n",
    "bert_encoder_config['initializer'] = tf.keras.initializers.TruncatedNormal(\n",
    "          stddev=bert_encoder_config.pop('initializer_range'))\n",
    "bert_encoder_config['max_sequence_length'] = bert_encoder_config.pop('max_position_embeddings')\n",
    "bert_encoder_config['num_layers'] = bert_encoder_config.pop('num_hidden_layers')\n",
    "\n",
    "bert_encoder_config"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {
    "id": "rIO8MI7LLijh"
   },
   "outputs": [],
   "source": [
    "manual_encoder = nlp.modeling.networks.BertEncoder(**bert_encoder_config)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "4a4tFSg9krRi"
   },
   "source": [
    "Restore the weights:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "X6N9NEqfXJCx",
    "outputId": "52e35a9b-28a5-46f0-9255-96109d9de1f9"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.training.tracking.util.CheckpointLoadStatus at 0x7f01eada6810>"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "checkpoint = tf.train.Checkpoint(encoder=manual_encoder)\n",
    "checkpoint.read(\n",
    "    os.path.join(gs_folder_bert, 'bert_model.ckpt')).assert_consumed()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "1BPiPO4ykuwM"
   },
   "source": [
    "Test run it:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "hlVdgJKmj389",
    "outputId": "6c1d0db1-cf08-4c7d-aa1f-2a6253e36cc4"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sequence output shape: (2, 23, 768)\n",
      "Pooled output shape: (2, 768)\n"
     ]
    }
   ],
   "source": [
    "result = manual_encoder(my_examples, training=True)\n",
    "\n",
    "print(\"Sequence output shape:\", result[0].shape)\n",
    "print(\"Pooled output shape:\", result[1].shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "nJMXvVgJkyBv"
   },
   "source": [
    "Wrap it in a classifier:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "id": "tQX57GJ6wkAb"
   },
   "outputs": [],
   "source": [
    "manual_classifier = nlp.modeling.models.BertClassifier(\n",
    "        bert_encoder,\n",
    "        num_classes=2,\n",
    "        dropout_rate=bert_encoder_config['dropout_rate'],\n",
    "        initializer=bert_encoder_config['initializer'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "kB-nBWhQk0dS",
    "outputId": "494b0289-8fef-4479-a959-62b293d4386e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.1162222 ,  0.00795904],\n",
       "       [ 0.18186635, -0.1599971 ]], dtype=float32)"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "manual_classifier(my_examples, training=True).numpy()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "E6AJlOSyIO1L"
   },
   "source": [
    "<a id=\"optimizer_schedule\"></a>\n",
    "\n",
    "### Optimizers and schedules\n",
    "\n",
    "The optimizer used to train the model was created using the `nlp.optimization.create_optimizer` function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "id": "28Dv3BPRlFTD"
   },
   "outputs": [],
   "source": [
    "optimizer = nlp.optimization.create_optimizer(\n",
    "    2e-5, num_train_steps=num_train_steps, num_warmup_steps=warmup_steps)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "LRjcHr0UlT8c"
   },
   "source": [
    "That high level wrapper sets up the learning rate schedules and the optimizer.\n",
    "\n",
    "The base learning rate schedule used here is a linear decay to zero over the training run:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "id": "MHY8K6kDngQn"
   },
   "outputs": [],
   "source": [
    "epochs = 3\n",
    "batch_size = 32\n",
    "eval_batch_size = 32\n",
    "\n",
    "train_data_size = len(glue_train_labels)\n",
    "steps_per_epoch = int(train_data_size / batch_size)\n",
    "num_train_steps = steps_per_epoch * epochs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 294
    },
    "id": "wKIcSprulu3P",
    "outputId": "67c35d16-8d56-4e7f-99b7-53a4f1983199"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f01f1049f10>]"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "decay_schedule = tf.keras.optimizers.schedules.PolynomialDecay(\n",
    "      initial_learning_rate=2e-5,\n",
    "      decay_steps=num_train_steps,\n",
    "      end_learning_rate=0)\n",
    "\n",
    "plt.plot([decay_schedule(n) for n in range(num_train_steps)])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "IMTC_gfAl_PZ"
   },
   "source": [
    "This, in turn is wrapped in a `WarmUp` schedule that linearly increases the learning rate to the target value over the first 10% of training:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 294
    },
    "id": "YRt3VTmBmCBY",
    "outputId": "ea7c8951-1f3b-4398-ae6b-e256ec182635"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f01f0f69210>]"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "warmup_steps = num_train_steps * 0.1\n",
    "\n",
    "warmup_schedule = nlp.optimization.WarmUp(\n",
    "        initial_learning_rate=2e-5,\n",
    "        decay_schedule_fn=decay_schedule,\n",
    "        warmup_steps=warmup_steps)\n",
    "\n",
    "# The warmup overshoots, because it warms up to the `initial_learning_rate`\n",
    "# following the original implementation. You can set\n",
    "# `initial_learning_rate=decay_schedule(warmup_steps)` if you don't like the\n",
    "# overshoot.\n",
    "plt.plot([warmup_schedule(n) for n in range(num_train_steps)])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "l8D9Lv3Bn740"
   },
   "source": [
    "Then create the `nlp.optimization.AdamWeightDecay` using that schedule, configured for the BERT model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "id": "2Hf2rpRXk89N"
   },
   "outputs": [],
   "source": [
    "optimizer = nlp.optimization.AdamWeightDecay(\n",
    "        learning_rate=warmup_schedule,\n",
    "        weight_decay_rate=0.01,\n",
    "        epsilon=1e-6,\n",
    "        exclude_from_weight_decay=['LayerNorm', 'layer_norm', 'bias'])"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "collapsed_sections": [],
   "name": "fine_tune_bert.ipynb",
   "provenance": [],
   "toc_visible": true
  },
  "environment": {
   "kernel": "python3",
   "name": "tf2-gpu.2-6.m91",
   "type": "gcloud",
   "uri": "gcr.io/deeplearning-platform-release/tf2-gpu.2-6:m91"
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.12"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
